Bagnaia had seemingly got the perfect start from pole ahead of pre-race title leader Oliveira, but he suddenly lost momentum on the run into the first corner, allowing the KTM into the lead.
This also gave fellow front-row starter Fabio Quartararo (Speed Up) a chance to pass Bagnaia on the inside, but the two made contact at the apex, which dropped Quartararo to 21st while Bagnaia escaped relatively unscathed in third.
Bagnaia made quick work of passing Jorge Navarro’s Gresini Kalex on the fifth lap into Turn 9, and began to chisel into the one-second advantage Oliveira had worked up.
A rehearsal overtake was made by Bagnaia with five laps to go on the inside of Turn 9, but Oliveira came straight back through at the final corner. Another attempt was made at Turn 1, but again to no avail as the KTM got better acceleration out of the corner.
With two laps to go, Bagnaia gave it another go into Turn 9, but again Oliveira remained on top out of the final corner.
But on the final lap it was Bagnaia who emerged victorious. The Italian tried to pass at the penultimate corner once more, and Oliveira went wide while re-passing into the final turn as he just gave Bagnaia the momentum to snatch the lead on the line by 0.264s.
This once again gives Bagnaia the championship lead by three points over Oliveira.
Luca Marini made it two Sky VR46 riders in the top three as he scored his third consecutive podium finish.
Alex Marquez looked like he would win the battle for the final rostrum spot against Marini and Italtrans’ Mattia Pasini, but he crashed, for the second consecutive race, at the final corner of the event while trying to pass the former.
Pasini scored fourth ahead of Navarro and the second KTM of Brad Binder. Intact GP’s Marcel Schrotter was seventh in his 150th Grand Prix start ahead of Joan Mir’s Marc VDS, who rose from 20th on the grid. Quartararo recovered to ninth.
Augusto Fernandez’s Pons Kalex and Simone Corsi’s Tasca Racing machine were eliminated after being collected in an incident with Lorenzo Baldassarri. Remy Gardner, Federico Fuligni and Sam Lowes were also casualties of the race.
Xavi Vierge was declared unfit to race after fracturing his right wrist in a collision with Steven Odendaal in qualifying.
|9||20||Fabio Quartararo||Speed Up||38'02.164||16.250|
|12||52||Danny Kent||Speed Up||38'03.630||17.716|
|16||89||Khairul Idham Pawi||Kalex||38'14.407||28.493|
|22||64||Bo Bendsneyder||Tech 3||38'28.680||42.766|
|73||Alex Marquez||Kalex||36'20.821||1 Lap|
|22||Sam Lowes||KTM||26'00.562||8 Laps|
|21||Federico Fuligni||Kalex||26'51.370||8 Laps|
|24||Simone Corsi||Kalex||4'40.347||22 Laps|
|87||Remy Gardner||Tech 3||4'40.608||22 Laps|
|40||Augusto Fernandez||Kalex||4'40.705||22 Laps|