Maverick Vinales stretched his Moto3 championship lead by taking his third consecutive victory in a ferocious race at Assen.
The lead pack stretched to 24 bikes in the first half of the race, before Avintia's Vinales, Ajo team-mates Danny Kent and Sandro Cortese, RW's Luis Salom and Team Germany rider Louis Rossi broke away.
Vinales and the Ajo duo were the main protagonists, swapping the lead countless times - including some unnerving near-misses between team-mates Kent and Cortese in which they were fortunate not to crash.
As the top three became ever more fraught over the final two laps, Salom was able to slip through and briefly take the lead.
It looked like Salom might snatch his maiden Moto3 win in opportunistic style, only to then run wide at the final chicane, allowing Vinales to sweep through and steal victory, while the Ajo duo went either side of Salom across the line. Video evidence had to be examined before the officials ruled that the order was Cortese, Kent (his first Moto3 podium), Salom.
Rossi completed the top five, with Monlau's Alex Rins recovering from a mid-race trip over the run-off to escape the next pack in sixth.
Alexis Masbou (Caretta) lead the following group in seventh, ahead of TT Motion rider Niklas Ajo, who was as high as second for a while before being edged back.
Reigning Italian 125cc champion Niccolo Antonelli (Gresini) was in the thick of the podium fight initially, but was elbowed down the order and later crashed.
Results - 22 laps: Pos Rider Team/Bike Time/Gap 1. Maverick Vinales Avintia FTR-Honda 38m45.432s 2. Sandro Cortese Ajo KTM + 0.831s 3. Danny Kent Ajo KTM + 0.842s 4. Luis Salom RW Kalex-KTM + 0.843s 5. Louis Rossi Germany FTR-Honda + 1.352s 6. Alex Rins Monlau Suter-Honda + 5.033s 7. Alexis Masbou Caretta-Honda + 7.817s 8. Niklas Ajo TT Motion KTM + 7.855s 9. Efren Vazquez Laglisse FTR-Honda + 8.037s 10. Miguel Oliveira Monlau Suter-Honda + 8.243s 11. Zulfahmi Khairuddin Ajo KTM + 8.378s 12. Romano Fenati Italia FMI FTR-Honda + 8.559s 13. Jakub Kornfeil Ongetta FTR-Honda + 12.133s 14. Toni Finsterbusch MZ-Honda + 12.358s 15. Hector Faubel Aspar Kalex-KTM + 12.533s 16. Arthur Sissis Ajo KTM + 12.654s 17. Alan Techer Technomag-CIP TSR-Honda + 12.836s 18. Adrian Martin Laglisse FTR-Honda + 12.876s 19. Alberto Moncayo Aspar Kalex-KTM + 12.944s 20. Brad Binder RW Kalex-KTM + 21.342s 21. Isaac Vinales Ongetta FTR-Honda + 21.507s 22. Alessandro Tonucci Italia FMI FTR-Honda + 21.581s 23. Simone Grotzkyj Ambrogio Suter-Honda + 38.872s 24. Jasper Iwema FGR-Honda + 39.237s 25. Bryan Schouten Dutch Honda + 39.272s 26. Julian Miralles MIR-Honda + 39.377s 27. Kenta Fujii Technomag-CIP TSR-Honda + 39.533s 28. Luigi Morciano Ioda Italia + 41.008s 29. Ivan Moreno Laglisse FTR-Honda + 43.193s Retirements: Marcel Schrotter Mahindra 20 laps Giulian Pedone Ambrogio Suter-Honda 16 laps Danny Webb Mahindra 15 laps Niccolo Antonelli Gresini FTR-Honda 14 laps Jack Miller Caretta-Honda 10 laps Jonas Folger Ioda 3 laps