Valentino Rossi denied pole sitter Marc Marquez a third lights to flag victory of the season as he took a sensational victory in Barcelona, despite dropping to eighth at the start of the race.
The Italian rider found himself dropping down the order thanks to a bad start, whilst reigning champion Jorge Lorenzo seized the lead before his race began to unravel a few laps later.
Rossi would fight his way back through the pack to take the lead at Turn 1 on lap six, as Lorenzo was passed by Marquez, Dani Pedrosa and Maverick Vinales in quick succession.
Lorenzo's race weekend took a big hit with ten laps remaining as he and Andrea Iannone made contact at Turn 10, taking both the Yamaha and Ducati rider out of the Catalan GP.
Meanwhile at the head of the field, Rossi came under pressure from Honda's Marquez as the pair fought over the lead, trading quickest times as the gap rarely stretched beyond a few tenths.
Marquez found a way past at Turn 10 with four laps remaining, but it didn't last long as just seconds later Rossi snuck past, emerging in the lead. However on the same lap Marquez made another move, breezing past the Italian down the start/finish straight, only for Rossi to beat Marquez on the brakes.
It didn't end there though. Marquez got past a lap later and made the move stick and looked as though victory might go to the Spaniard. But Rossi wasn't done and remained close enough to challenge on the penultimate lap, where he would go on to take the lead and his 88th MotoGP victory.
Pedrosa would complete the podium as he finished almost 20 seconds clear of Vinales in fourth and Pol Espargaro in fifth.
LCR Honda's Cal Crutchlow worked his way to sixth to seal top Independent Team rider honours and take his best finish of the year and his first top ten since Valencia 2015.
Hector Barbera (Avintia Racing) was demoted a position at the end of the race for exceeding track limits. This granted Jack Miller (Estrella Galicia 0,0 Marc VDS) his first ever-top ten in the premier class.
Bradley Smith (Monster Yamaha Tech 3) was forced to retire on the sixth lap, technical problems dropping him down the field.
Aleix Espargaro (Team Suzuki Ecstar) was also forced to retire, his rear tyre offering no grip by the 19th lap of the race.
