Rossi is now nine points clear of Lorenzo in the world championship, with Stoner 16 back and fourth placed-Pedrosa 59 behind The Doctor.
As well as his qualifying crash damage, Stoner had his mystery energy-sapping illness to contend with, but the Australian proved he was up for a fight by overtaking Rossi for second place early in the race.
Once he had dropped back to fourth, the 2007 world champion stuck with the Fiat Yamahas until around ten laps to go, when he began to slip away. Stoner reached the finish 12 seconds behind Pedrosa and nine seconds in front of his Ducati Marlboro team-mate Nicky Hayden.
Hayden, riding in a special patriotic livery for his home race, gained one place from eighth on the grid during the opening lap, which then became sixth when his Repsol Honda replacement Andrea Dovizioso lowsided out of fourth - just ahead of Lorenzo - on lap 7.
The American overtook Toni Elias for fifth soon after, but the San Carlo Honda Gresini Honda rider fought back and was only 0.378sec behind at the flag. Both Hayden and Elias claimed their best result of the season so far.
The only other American, Colin Edwards, rode to a discreet seventh for Monster Yamaha Tech 3, with Chris Vermeulen (Rizla Suzuki) and Randy de Puniet (Honda LCR) a lonely eighth and ninth. Marco Melandri (Hayate) held off Alex de Angelis (Gresini Honda) by just 0.7sec to complete the top ten.
Twelfth and last of the riders to reach the flag was Laguna Seca rookie Niccolo Canepa, of Pramac Ducati.
Joining Dovizioso in crashing out were Gabor Talmacsi (Scot Honda), Loris Capirossi (Rizla Suzuki) and Sete Gibernau (Francisco Hernando Ducati), while Tech 3's James Toseland was black flagged for failing to serve a ride through penalty for a jump-start.
Round nine of the world championship takes place at the Sachsenring in Germany on July 19.
US Grand Prix:
1. Pedrosa
2. Rossi
3. Lorenzo
4. Stoner
5. Hayden
6. Elias
7. Edwards
8. Vermeulen
9. de Puniet
10. Melandri
11. de Angelis
12. Canepa