Nico Terol claimed his fourth win from five races in the 125cc season after Johann Zarco was adjudged to have illegally overtaken the championship leader on the run to the flag.
The duo's long battle had come down to a final sprint out of the last corner, during which Zarco ran wide and made contact with Terol before crossing the line ahead.
It looked like Zarco had clinched his maiden win, but race direction immediately began an investigation, and while the riders were still giving interviews in parc ferme it was announced that the Ajo Derbi rider would be given a 20-second penalty for "illegal overtaking," dropping him to fifth and giving Terol the win after all.
The race had begun on a slightly damp track, although only a handful of midfield riders chose to use wet ti=res.
After ending Terol's winning run at Le Mans, Maverick Vinales took the fight to him again early on, and briefly pulled away in the lead, to the delight of his Blusens team's sponsor Paris Hilton, who is present this weekend. But as Terol (Aspar Aprilia) reeled Vinales in, Zarco started catching them both to make it a three-way fight.
Vinales was eventually shuffled down to third and then dropped by the other two as they raised their pace.
Terol gave Zarco an easy pass with three laps to go, then stuck behind him and retaliated as they started the final lap. The points leader than tried to make a break, only for Zarco to attack again out of the last corner, cutting to the inside for a drag race to the flag. Both ran slightly wide and off the track, making contact as they did so. Terol came off second-best – to the chagrin of the vocal Spanish crowd – but he was swiftly given victory after all.
That also elevated Vinales to second, and meant Jonas Folger earned a podium by winning a tight battle with Sandro Cortese and Efren Vazquez for fourth on the road.
Hector Faubel had spent much of the race dicing with Folger until he went off at Turn 1 following a close call between them. He fell to eighth and only managed to regain one position.