Jorge Martin wins French Grand Prix sprint ahead of Marc Marquez
VR46 Racing's Marco Bezzecchi had looked well set for second place but the Italian crashed with four laps to go, allowing Marquez to finish second while Aprilia's Maverick Vinales came third.
"I'm so happy, the pace was outstanding. It was difficult because Marco was putting in great laps," Martin said after his 12th sprint victory in MotoGP and his fifth straight podium of the season.
"But when he crashed I just concentrated on making it to the end. Today we got the win, so we will enjoy."
While reigning champion Francesco Bagnaia had a poor start and fell outside the top 10, Marquez flew off his mark, methodically carving his way through the pack to make up nine places and sit fourth by the end of the opening lap.
Things got worse for Ducati's Bagnaia, who came into the pits with a problem and retired from the sprint, while Aprilia's Aleix Espargaro - who had moved up to third - was given a double long-lap penalty by race stewards for a jump start.
That allowed Marquez to move up to third and although he was a second away from Bezzecchi the VR46 Racing rider was under pressure and suddenly lost control four laps from the finish at turn nine to give Marquez a free look at race leader Martin.
But Marquez ran out of time in the 13-lap sprint as Martin claimed victory to extend his lead in the championship to 28 points.
Enea Bastianini finished fourth and as a result he leapfrogged team mate Bagnaia in the standings to sit second behind Martin, with the two Ducati riders separated by one point.