Maverick Vinales captured his second Moto3 victory of the season with a superb breakaway ride at Catalunya, cutting Sandro Cortese's championship lead to just seven points.
The Avintia FTR-Honda rider led a string of seven riders all fighting for first for the opening half of the race, with only 1.2 seconds covering the group at the halfway mark.
As those behind him began to squabble for position however Vinales made his break, edging a gap of four tenths of a second 12 laps from the end.
It proved perfectly timed, as the sight of the Spaniard escaping sparked the chasing pack to push even harder - and stumble over each other even more.
Second place changed hands almost corner by corner, exaggerating Vinales' gains. Within one lap he was two seconds clear; within two, his lead was suddenly over four. It increased for the remainder of the race, allowing Vinales to stand atop his bike as he claimed the flag.
Cortese (Ajo KTM) could not quite match the magnitude of Vinales' breakaway, but he was able to crucially pull clear of the runner-up fight on the final lap, allowing him to claim second and preserve his championship lead.
His podium was all the more remarkable considering his heavy fall in third practice, for which he was still receiving treatment in the build up to the race.
Miguel Oliveira (Monlau Honda) got the better of Louis Rossi (Germany FTR-Honda), Alexis Masbou (Caretta Honda), wildcard Alex Marquez (Galicia Suter-Honda), Hector Faubel (Aspar Kalex-KTM ) and Zulfahmi Khairuddin (Ajo KTM) to seal third.
The seven-strong group had swapped positions throughout the race, continuing until the very final corner when Oliveira edged inside Masbou and then beat Rossi to the line in a photo finish.
Results - 22 laps: Pos Rider Team/Bike Time/Gap 1. Maverick Vinales Avintia FTR-Honda 41m50.965s 2. Sandro Cortese Ajo KTM + 7.752s 3. Miguel Oliveira Monlau Suter-Honda + 7.853s 4. Louis Rossi Germany FTR-Honda + 8.007s 5. Alexis Masbou Caretta Honda + 8.075s 6. Alex Marquez Monlau Suter-Honda + 8.267s 7. Hector Faubel Aspar Kalex-KTM + 8.355s 8. Zulfahmi Khairuddin Ajo KTM + 8.480s 9. Romano Fenati Italia FMI FTR-Honda + 8.600s 10. Luis Salom RW Kalex-KTM + 16.023s 11. Jakub Kornfeil Ongetta FTR-Honda + 16.127s 12. Niccolo Antonelli Gresini FTR-Honda + 16.222s 13. Alan Techer Technomag-CIP TSR-Honda + 16.792s 14. Alberto Moncayo Aspar Kalex-KTM + 30.132s 15. Jack Miller Caretta Honda + 30.132s 16. Jasper Iwema FGR Honda + 30.304s 17. Adrian Martin Laglisse FTR-Honda + 30.663s 18. Ivan Moreno Laglisse FTR-Honda + 30.970s 19. John McPhee KRP-Honda + 31.042s 20. Danny Kent Ajo KTM + 43.738s 21. Niklas Ajo TT Motion KTM + 43.765s 22. Arthur Sissis Ajo KTM + 44.119s 23. Simone Grotzkyj Ambrogio Suter-Honda + 1m02.007s 24. Isaac Vinales Ongetta FTR-Honda + 1m11.320s 25. Kenta Fujii Technomag-CIP TSR-Honda + 1m19.060s 26. Luigi Morciano Ioda Italia + 1m19.314s 27. Giulian Pedone Ambrogio Suter-Honda + 1m19.331s Retirements: Alessandro Tonucci Italia FMI FTR-Honda 21 laps Danny Webb Mahindra 16 laps Marcel Schrotter Mahindra 16 laps Alex Rins Monlau Suter-Honda 15 laps Efren Vazquez Laglisse FTR-Honda 15 laps Brad Binder RW Kalex-KTM 6 laps Jonas Folger Ioda 4 laps