Marc Marquez came back from 10th place to maintain his 2014 MotoGP unbeaten run with win number five in the French Grand Prix at Le Mans.
Marquez made a poor start from pole position and then became embroiled in a mid-pack traffic jam further around the opening lap, having to go wide to dodge the dicing Pol Espargaro and Jorge Lorenzo.
That left the championship leader's Honda down in 10th, but he needed just 13 of the 28 laps to scorch back through the field.
Andrea Dovizioso led initially on his Ducati before fading down the order, with Valentino Rossi then taking control for Yamaha for a spell.
Once Marquez reached second place it was only a matter of time before Rossi had to relinquish the lead, and the seven-time champion made it easier than expected when he ran wide and let the Honda slip through.
Marquez's Le Mans victory makes him the first man since Mick Doohan in the 1997 500cc championship to take five poles and five wins in a row in the top class.
Rossi fell nearly four seconds behind before Marquez's laidback final lap pace reduced that gap.
The Italian's second place was briefly under threat from Alvaro Bautista as the Gresini Honda rider surged forward in the second half of the race.
In the end Bautista's focus had to be on defending third - and his first podium finish since October 2012 - as Pol Espargaro and Dani Pedrosa closed in.
It was another poor race for Lorenzo. He climbed from an initial eighth to fifth before falling behind Pedrosa and finishing a lonely sixth.
Stefan Bradl was a podium challenger for much of the race but fell back to seventh, while Dovizioso halted his slide in eighth place, beating Aleix Espargaro and Bradley Smith to the flag.
After his impressive start to the weekend on Friday, Andrea Iannone's grand prix was short and messy.
He collided with Nicky Hayden on the first lap, causing the American to crash out, and then fell by himself while grappling with boot damage from the side-on impact with the Aspar Honda.
Results - 28 laps:
Pos Rider Team/Bike Time/Gap
1. Marc Marquez Honda 44m03.925s
2. Valentino Rossi Yamaha +1.486s
3. Alvaro Bautista Gresini Honda +3.144s
4. Pol Espargaro Tech 3 Yamaha +3.717s
5. Dani Pedrosa Honda +4.077s
6. Jorge Lorenzo Yamaha +7.088s
7. Stefan Bradl LCR Honda +11.527s
8. Andrea Dovizioso Ducati +22.103s
9. Aleix Espargaro Forward Yamaha +22.626s
10. Bradley Smith Tech 3 Yamaha +23.108s
11. Cal Crutchlow Ducati +25.780s
12. Scott Redding Gresini Honda +39.523s
13. Yonny Hernandez Pramac Ducati +42.544s
14. Hiroshi Aoyama Aspar Honda +42.736s
15. Karel Abraham Cardion Honda +56.644s
16. Michael Laverty PBM Aprilia +1m14.123s
17. Colin Edwards Forward Yamaha +1m19.723s
18. Broc Parkes PBM Aprilia +1m30.934s
19. Mike di Meglio Avintia FTR-Kawasaki +1m34.521s
Andrea Iannone Pramac Ducati 1 lap
Hector Barbera Avintia FTR-Kawasaki 1 lap
Nicky Hayden Aspar Honda 0 laps