Marc Marquez trimmed Stefan Bradl's Moto2 championship lead to 23 points by scoring his sixth win of the year in a hard-fought race at Misano.
The title rivals were joined by Andrea Iannone and Scott Redding in a spectacular lead battle that raged for most of the 26 laps.
Bradl (Kiefer Kalex) had led from pole at the start but a mistake out of Turn 14 let Marquez (Catalunya Suter) and Redding (Marc VDS Suter) through. Redding then grabbed the lead from Marquez, who would lose places to Bradl and Iannone with a minor error of his own moments later.
Redding confidently pulled away in the lead, putting in his best Moto2 ride yet. It was a poignant and praiseworthy performance as the 18-year-old Briton returned to the track where he had been blamelessly involved in Shoya Tomizawa's fatal accident 12 months ago, and took total control of the first half of the race.
Iannone, Marquez and Bradl would eventually reel Redding in. On lap 13, Speed Master rider Iannone attacked Redding but was successfully fended off - allowing Marquez to get between them, and then to grab first from Redding a few corners later.
Then when Iannone retaliated against Marquez, it was the Spaniard who lost momentum, allowing Bradl back through, with the German then overtaking Iannone on the next lap.
But when Iannone repassed Bradl for the lead with six laps to go, a close call between them saw the points leader fall to fourth again, with Marquez then passing Iannone next time around and starting to pull away.
Bradl got back up to second and began to chase Marquez down, taking Iannone with him, but they could not catch the reigning 125cc champion, who won by 0.619 seconds over Bradl and 0.713s over Iannone.
JIR's Alex de Angelis, who had also been caught up in Tomizawa's accident a year ago, came through to fourth ahead of Redding in the end, with Bradley Smith chasing his countryman to the flag in sixth having stayed with the leaders all race. Yuki Takahashi was part of this pack too and finished seventh.
Results - 26 laps: Pos Rider Team/Bike Time/Gap 1. Marc Marquez Catalunya Suter 43m08.197s 2. Stefan Bradl Kiefer Kalex + 0.619s 3. Andrea Iannone Speed Master Suter + 0.713s 4. Alex de Angelis JIR Motobi + 1.634s 5. Scott Redding Marc VDS Suter + 3.275s 6. Bradley Smith Tech 3 + 3.436s 7. Yuki Takahashi Gresini Moriwaki + 5.255s 8. Thomas Luthi Interwetten Suter + 8.739s 9. Pol Espargaro Speed Up FTR + 13.224s 10. Simone Corsi Ioda FTR + 13.551s 11. Esteve Rabat Blusens FTR + 17.533s 12. Julian Simon Aspar Suter + 18.163s 13. Dominique Aegerter Technomag-CIP Suter + 18.254s 14. Michele Pirro Gresini Moriwaki + 19.180s 15. Mika Kallio Marc VDS Suter + 24.454s 16. Mike di Meglio Tech 3 + 24.858s 17. Mattia Pasini Ioda FTR + 24.992s 18. Claudio Corti Italtrans Suter + 35.358s 19. Randy Krummenacher Kiefer Kalex + 35.800s 20. Tomoyoshi Koyama Technomag-CIP Suter + 37.371s 21. Ricard Cardus QMMF Moriwaki + 37.484s 22. Raffaele de Rosa Forward Suter + 47.904s 23. Kenny Noyes Avintia FTR + 48.833s 24. Santiago Hernandez SAG FTR + 56.858s 25. Valentin Debise Speed Up FTR + 1m06.771s 26. Joan Olive Blusens FTR + 1m07.053s 27. Anthony West MZ + 1m13.378s 28. Jacob Gagne Castello FTR + 1m21.741s 29. Alessandro Andreozzi Andreozzi FTR + 1m30.644s 30. Mashel Al Naimi QMMF Moriwaki + 1 lap Retirements: Aleix Espargaro Pons Kalex 13 laps Max Neukirchner MZ 13 laps Carmelo Morales G22 Moriwaki 12 laps Jules Cluzel Forward Suter 6 laps Alex Baldolini Pons Kalex 0 laps Xavier Simeon Tech 3 0 laps Robertino Pietri Italtrans Suter 0 laps Ratthapark Wilairot SAG FTR 0 laps