Ex-Aprilia MotoGP rider Sam Lowes scored his first Moto2 win since 2016 at Le Mans, aided by fellow Briton Jake Dixon crashing out of the lead.
On a still slightly damp track, the race bizarrely started without poleman Joe Roberts in position, as the American Racing rider suffered a bike problem ahead of the warm-up lap and didn't catch up to the back of the pack before the red lights went out.
Remy Gardner took advantage of Roberts' absence to vault into an early lead ahead of Xavi Vierge and Lowes, but on the second tour Marc VDS rider Lowes picked off both the Petronas Sprinta bike of Vierge and Gardner on the SAG machine to grab the lead.
Dixon on the second Petronas machine then charged up to second on the third lap of 26, with team-mate Vierge crashing out on lap five, and on lap seven he took advantage of Lowes running wide at Garage Vert to take the lead.
The former British Superbike title contender had a lead as big as three seconds at one point before a recovering Lowes started to close back in, with the gap between the pair stabilising at a little over a second in the middle part of the race.
But Dixon's hopes of a first grand prix win ended on lap 22 with a low-side at the final corner, gifting Lowes a lead he would manage to the chequered flag to claim his first victory since the 2016 Aragon round - and his first since his ill-fated MotoGP stint.
Gardner passed VR46 rider Marco Bezzecchi on the last lap to grab second, his best result of the year, while Augusto Fernandez was fourth on the second Marc VDS bike.
From last, Roberts completed a remarkable charge to finish in sixth place behind Thomas Luthi (Intact GP). Rounding out the top 10 were Fabio di Giannantonio (Speed Up), Lorenzo Baldassarri (Pons), Enea Bastianini (Italtrans) and Somkiat Chantra (Honda Team Asia).
Points leader Luca Marini (VR46) finished out of the points in 17th following his massive practice crash that required him to be taken for hospital for a check-up.
Marini nonetheless maintains a 13-point lead at the head of the table with five rounds to run ahead of Bastianini, while Bezzecchi and Lowes are 20 and 22 points back respectively.
Moto2 French Grand Prix race results - 25 laps
|1||Sam Lowes||EG 0,0 Marc VDS||41m27.648s|
|2||Remy Gardner||ONEXOX TKKR SAG Team||3.822s|
|3||Marco Bezzecchi||SKY Racing Team VR46||4.184s|
|4||Augusto Fernandez||EG 0,0 Marc VDS||5.884s|
|5||Thomas Luthi||Liqui Moly Intact GP||21.668s|
|6||Joe Roberts||Tennor American Racing||29.197s|
|7||Fabio Di Giannantonio||Termozeta Speed Up||32.249s|
|8||Lorenzo Baldassarri||Flexbox HP 40||34.376s|
|9||Somkiat Chantra||Idemitsu Honda Team Asia||35.392s|
|10||Marcel Schrotter||Liqui Moly Intact GP||35.521s|
|11||Enea Bastianini||Italtrans Racing Team||37.720s|
|12||Hector Garzo||Flexbox HP 40||37.910s|
|13||Marcos Ramirez||Tennor American Racing||38.423s|
|14||Stefano Manzi||MV Agusta Forward Racing||43.464s|
|15||Hafizh Syahrin||Inde Aspar Team Moto2||44.036s|
|16||Simone Corsi||MV Agusta Forward Racing||44.217s|
|17||Luca Marini||SKY Racing Team VR46||59.550s|
|18||Lorenzo Dalla Porta||Italtrans Racing Team||1m09.735s|
|19||Edgar Pons||Federal Oil Gresini Moto2||1m09.751s|
|20||Bo Bendsneyder||NTS RW Racing GP||1m12.930s|
|21||Tetsuta Nagashima||Red Bull KTM Ajo||1m14.158s|
|22||Piotr Biesiekirski||NTS RW Racing GP||1 Lap|
|-||Kasma Kasmayudin||ONEXOX TKKR SAG Team||Disqualified|
|-||Jake Dixon||Petronas Sprinta Racing||Retirement|
|-||Jorge Navarro||Termozeta Speed Up||Retirement|
|-||Nicolo Bulega||Federal Oil Gresini Moto2||Retirement|
|-||Andi Izdihar||Idemitsu Honda Team Asia||Retirement|
|-||Xavi Vierge||Petronas Sprinta Racing||Retirement|
|-||Jorge Martin||Red Bull KTM Ajo||Retirement|
|-||Aron Canet||Inde Aspar Team Moto2||Not started|