Bradley Smith took the 125cc championship lead with his second win of the season at Mugello.
The Aspar Aprilia rider succeeded in escaping from his rivals and avoiding the traditional slipstreaming for the lead on the last lap.
Nico Terol pushed Smith all the way to the flag, with Julian Simon having to settle for third after losing touch with the leaders in the closing stages.
The opening laps saw a typically frenetic Mugello lead battle with seven riders drafting each other.
Smith then briefly made a break, benefiting when Andrea Iannone's bike slowed mid-corner while in second behind him on lap five. As Iannone trundled into retirement, continuing his miserable recent run, Smith was handed a one-second lead as his rivals had to jink around the Italian's bike.
But Terol and Simon managed to reel Smith back in and resume their earlier battle. It looked like a three-abreast sprint to the line was in prospect, until Simon lost pace and dropped away from Smith and Terol in the final laps as his engine began to overheat.
Determined to avoid being out-dragged on the final run to the line, Smith pushed flat-out around the last lap and just pulled out enough of an advantage to stop Terol getting a tow, allowing the Briton to clinch his second win of the season and take the points lead in the process.
Pol Espargaro charged through to fourth, beating Marc Marquez, with Johann Zarco completing the top six after the best ride of his rookie season so far.
At one stage it looked like three of the top five finishers might be Britons, as Scott Redding and Danny Webb joined Smith in the battle for the lead. But Webb crashed out of fourth before half-distance, and Redding fell back to seventh after a wild slide on the last lap.
Pos Rider Bike Time 1. Bradley Smith Aprilia 40m09.523s 2. Nicolas Terol Aprilia + 0.216s 3. Julian Simon Aprilia + 7.114s 4. Pol Espargaro Derbi + 11.829s 5. Marc Marquez KTM + 12.315s 6. Johann Zarco Aprilia + 14.605s 7. Scott Redding Aprilia + 15.305s 8. Stefan Bradl Aprilia + 22.255s 9. Lorenzo Savadori Aprilia + 22.392s 10. Sandro Cortese Derbi + 29.239s 11. Sergio Gadea Aprilia + 36.359s 12. Lorenzo Zanetti Aprilia + 36.444s 13. Randy Krummenacher Aprilia + 36.507s 14. Jonas Folger Aprilia + 36.581s 15. Takaaki Nakagami Aprilia + 36.636s 16. Esteve Rabat Aprilia + 36.834s 17. Luigi Morciano Aprilia + 49.870s 18. Simone Corsi Aprilia + 50.419s 19. Dominique Aegerter Derbi +1m05.900s 20. Riccardo Moretti Aprilia +1m06.019s 21. Davide Stirpe Honda +1m20.225s 22. Lukas Sembera Aprilia +1m21.946s 23. Jasper Iwema Honda +1m43.074s 24. Gennaro Sabatino Aprilia + 1 lap 25. Luca Vitali Aprilia + 1 lap 26. Alessandro Tonucci Aprilia + 1 lap Retirements: Luca Marconi Aprilia 12 laps Daniel Webb Aprilia 8 laps Andrea Iannone Aprilia 5 laps Joan Olive Derbi 5 laps Efren Vazquez Derbi 5 laps Tomoyoshi Koyama Loncin 2 laps Alexis Masbou Loncin 1 lap