Nicolas Terol withstood race-long pressure to score his second career 125cc victory and his first of the season in the Czech Grand Prix at Brno.
The 20-year-old Spaniard led almost the entire 19-lap race on his Jack and Jones Aprilia despite a ferocious pursuit from championship leader Julian Simon that lasted until the final corner.
Andrea Iannone was also involved in the lead battle for much of the time, and was indeed briefly the race's only other leader, but dropped away from the front pair in the final quarter of the event.
Simon, having broken clear of the gaggle to catch Terol and Iannone in the first couple of laps, came closest to taking the lead for himself with four laps to go. But the Spaniard was unfortunate to encounter backmarkers at the wrong time in the final Esses.
Terol slipped past them with less complication, and the small advantage he gained in the two laps it took Simon to regroup his attack may have been enough to secure the victory.
Iannone ended up finishing third as he drifted further away from the leading two in the closing stages.
Bradley Smith took a frustrated fourth.
The Briton should probably have been part of the fight for the win, but he had to sit up on the bike in the final Esses to avoid a crash at the end of the opening lap while running third.
He dropped back into the gaggle. And while a brave move into Turn 3 saw him take at least two riders in one shot to move back up to fourth, he never managed to regather the ground to the leaders.
Pol Espergaro took fifth at the front of a crazy battle that at one point involved as many as 12 riders.
Sandro Cortese beat fellow German Stefan Bradl to sixth, with Marco Marquez fighting back to eighth after his qualifying crash ahead of Sergio Gadea and Juan Olive.
Pos Rider Bike Time
1. Nicolas Terol Aprilia 40m57.378s
2. Julian Simon Aprilia + 0.168s
3. Andrea Iannone Aprilia + 8.719s
4. Bradley Smith Aprilia + 12.443s
5. Pol Espargar� Derbi + 16.006s
6. Sandro Cortese Derbi + 16.066s
7. Stefan Bradl Aprilia + 17.105s
8. Marc M�rquez KTM + 17.202s
9. Sergio Gadea Aprilia + 17.223s
10. Joan Olive Derbi + 17.244s
11. Johann Zarco Aprilia + 17.618s
12. Jonas Folger Aprilia + 21.977s
13. Marcel Schr�tter Honda + 34.487s
14. Efr�n Vazquez Derbi + 34.512s
15. Scott Redding Aprilia + 41.558s
16. Daniel Webb Aprilia + 43.098s
17. Randy Krummenacher Aprilia + 43.121s
18. Dominique �gerter Derbi + 43.164s
19. Takaaki Nakagami Aprilia + 43.453s
20. Michael Ranseder Aprilia + 43.917s
21. Tomoyoshi Koyama Loncin + 50.710s
22. Luigi Morciano Aprilia +1m09.976s
23. Alessandro Tonucci Aprilia +1m10.633s
24. Alexis Masbou Loncin +1m35.007s
25. Luca Vitali Aprilia +1m39.485s
26. Luca Marconi Aprilia +1m39.739s
27. Karel Pesek Derbi +1m40.019s
28. Ivan Visak Honda + 1 laps
29. Ladislav Chmelik Honda + 1 laps
30. Luk� �embera Aprilia + 1 laps
Simone Corsi Aprilia 12 laps
Lorenzo Savadori Aprilia 8 laps
Esteve Rabat Aprilia 7 laps
Luis Salom Aprilia 5 laps
Jasper Iwema Honda 2 laps
Lorenzo Zanetti Aprilia 1 laps