Starting from pole position for the eighth time in his MotoGP career, Johann Zarco made a brilliant start to lead into turn one.
There was immediate contact between Fabio Quartararo and Maverick Vinales as the reigning world champion dashed round the outside of the Aprilia rider.
Vinales then lost further places on the entry to turn one as Jack Miller, Francesco Bagnaia and Alex Rins, who made a sensational start from tenth, moved into fifth.
Vinales came back at Rins at turn nine, however, Rins was determined to get back ahead, which he did before the opening lap was complete.
As riders began lap two, Quartararo received his Long lap notification but chose not to take it at the first opportunity.
As Rins then lined up a move on Bagnaia, Quartararo again chose not to take his Long Lap penalty, meaning lap four was a must for the French rider.
That’s exactly what Quartararo did as he entered the Long Lap loop in second before exiting in fifth, behind Bagnaia.
Looking comfortable in the lead, the British MotoGP was turned on its head when Zarco crashed from the lead at turn eight.
Zarco’s mistake gifted the lead to Miller, who was then immediately passed by Rins. The Australian bit straight back, however, the Suzuki rider regained the lead at turn eight [lap six] as Miller instead came under pressure from Bagnaia.
The fastest rider on-track, Jorge Martin was on an absolute charge as he gained fifth off Vinales before making that fourth from Quartararo on the next lap.
Despite finding the pace too hot to handle early on, an injured Aleix Espargaro was beginning to close in on Quartararo and Vinales for fifth.
Out front, Rins was now pulling clear of Miller as Bagnaia attacked his team-mate for second. With a clean overtake made, Bagnaia managed to keep the gap from Rins at around one second.
With Quartararo continuing to lack pace - Vinales was the next rider to make his way through on the Yamaha rider - things got even worse as Mir and Espargaro closed in.
Talking of closing in, that’s exactly what happened for the lead as Bagnaia reduced the Suzuki rider’s lead to half a second on lap nine.
Bagnaia visibly had more rear grip than Rins as riders were now over half-race distance, and with nine laps to go, the Italian duly took the lead from Rins at turn seven.
As Bagnaia received a track limits warning, Vinales, who was one of the fastest riders on-track, made his way through on Martin for P4.
Struggling for late race pace, Rins was then overtaken by Miller as the Australian made it a Ducati 1-2.
A rider picking up pace as the last few laps approached was Enea Bastianini, as the Gresini Ducati rider got through on Espargaro and Mir in one lap. Mir, who like team-mate Rins was struggling for pace, then crashed out at turn seven.
After eventually getting through on Rins for third, Vinales’s epic charge got even better…
The Aprilia rider made quick work of Miller before hunting down Bagnaia for the lead. Right on the rear of Bagnaia’s Ducati, Vinales went for it at ‘Abbey’ corner, his favourite overtaking spot, however, Bagnaia got the switchback in order to reclaim the lead.
Vinales then lost all hope of victory after running wide twice on the final lap, but did manage to hold off Miller for second.
Quartararo’s disappointing day got worse after losing seventh to Miguel Oliveira. In fact, the championship leader was attacked into the penultimate corner by an injured Espargaro but he too managed to hold off the Aprilia rider and claim eighth.