Nico Terol denied Johann Zarco a maiden 125cc race victory yet again as the championship leader pipped his title rival by 0.022 seconds on the line at Misano.
Poleman Zarco had fallen to fifth on the opening lap after some close calls at the first corner, but soon fought back through to join Terol in a two-bike breakaway.
They swapped places a few times going into the final half-dozen laps, but it was on the very last tour that the battle really erupted, as Ajo Derbi rider Zarco slipped ahead of Terol's Aspar Aprilia into Turn 4.
Zarco then ran slightly wide at Turn 13, with Terol diving inside into the next corner. However Zarco was able to hang on around the outside and appeared to be far enough ahead as they charged into the final corner, only for Terol to get a better run onto the straight and edge back past as they took the flag - helped by Zarco losing momentum as he looked back to see where his rival was. The Frenchman tried to change his line and even put an arm out as if to try and hold Terol back, but the points leader flew past and snatched the win.
Terol's seventh win of the year extends his championship lead over Zarco to 31 points with five races to go.
Zarco's team-mate Efren Vazquez stayed with the top two for a while before slipping away to take a lonely third.
Sandro Cortese won a big battle for fourth that also featured Hector Faubel, Danny Kent (who had briefly been second after a mighty start), slow-starter Maverick Vinales and Sergio Gadea.
Wildcard rider Miroslav Popov could not maintain the spectacular form that earned him sixth on the grid, and could only finish 13th after losing ground off the line.
Results - 23 laps: Pos Rider Team/Bike Time/Gap 1. Nicolas Terol Aspar Aprilia 40m02.164s 2. Johann Zarco Ajo Derbi + 0.022s 3. Efren Vazquez Ajo Derbi + 4.932s 4. Sandro Cortese Germany Aprilia + 9.322s 5. Hector Faubel Aspar Aprilia + 9.964s 6. Danny Kent Ajo Aprilia + 12.100s 7. Maverick Vinales Blusens Aprilia + 12.324s 8. Sergio Gadea Blusens Aprilia + 12.556s 9. Jonas Folger Ajo Aprilia + 21.489s 10. Miguel Oliveira Andalucia Aprilia + 30.678s 11. Alberto Moncayo Andalucia Aprilia + 31.321s 12. Jakub Kornfeil Ongetta Aprilia + 31.552s 13. Miroslav Popov Ellegi Aprilia + 32.637s 14. Luigi Morciano Italia FMI Aprilia + 52.542s 15. Marcel Schrotter Mahindra + 53.850s 16. Kevin Calia MGP Aprilia + 53.917s 17. Alessandro Tonucci Italia FMI Aprilia + 58.742s 18. Manuel Tatasciore Phonica Aprilia + 1m03.723s 19. Alessandro Giorgi VFT Aprilia + 1m04.113s 20. Alexis Masbou Caretta KTM + 1m04.956s 21. Danny Webb Mahindra + 1m08.795s 22. Taylor Mackenzie Phonica Aprilia + 1m08.846s 23. Giulian Pedone Phonica Aprilia + 1m17.719s 24. Jack Miller Caretta KTM + 1m18.752s 25. Joan Perello Matteoni Aprilia + 1m36.950s 26. Adrian Martin Aspar Aprilia + 2 laps 27. Zulfahmi Khairuddin Ajo Derbi + 3 laps Retirements: Sturla Fagerhaug WTR-Ten10 Aprilia 17 laps Jasper Iwema Ongetta Aprilia 10 laps Massimo Parziani Faenza Aprilia 10 laps Luis Salom RW Aprilia 7 laps Francesco Mauriello WTR-Ten10 Aprilia 3 laps Harry Stafford Ongetta Aprilia 0 laps Louis Rossi Matteoni Aprilia 0 laps