Oliveira, que partiu da 11.ª posição, cortou a meta a 23,292 segundos de Bagnaia, que bateu o compatriota Enea Bastianini por 0,799 segundos, com o espanhol Jorge Martin na terceira posição, a 0,924.
Bagnaia, que largou da quinta posição, depois de uma sanção por ter atrapalhado o espanhol Alex Márquez (Ducati) na primeira sessão de treinos livres, fez um bom arranque e chegou ao comando logo na segunda curva.
A partir daí, empreendeu uma cavalgada em solitário, apesar de sempre vigiado de perto por Jorge Martin, líder do campeonato.
Já Miguel Oliveira, arrancou mal do 11.º posto e afundou-se no pelotão, até ao 15.º.
À terceira volta, o piloto português ultrapassou o australiano Jack Miller (KTM) e subiu ao 14.º posto, que ocupou até à 10.ª volta, quando ganhou uma posição a Alex Rins (Yamaha).
Quando seguia já no encalço do companheiro de equipa, o espanhol Raul Fernandez (Aprilia), atrasou-se e acabou ultrapassado pelo italiano Marco Bezzecchi (Ducati).
Enquanto isso, na frente da corrida, Bagnaia chegou a ter mais de meio segundo de vantagem para Martin, que, contudo, atacou nas últimas voltas, chegando a estar a duas décimas do italiano campeão do mundo, a duas voltas do final.
Mas, seria o canto do cisne para Martin, que não só viu Bagnaia afastar-se definitivamente como ainda teve de lidar com um Enea Bastianini renascido nas últimas voltas.
A ‘Besta’, como é conhecido o italiano da Ducati, recuperou o terceiro lugar ao espanhol Marc Márquez (Ducati) na penúltima volta. “Depois, vi que estava perto do Martin e achei que ainda dava para o segundo lugar”, explicou, no final.
A ultrapassagem foi consumada na última curva, sem hipóteses de reação para Jorge Martin, que ainda manteve o comando do campeonato.
O piloto madrileno tem, agora, 171 pontos, mais 18 do que Bastianini, que é segundo.
Já Miguel Oliveira, desceu ao 15.º lugar, com 31 pontos, os mesmos de Franco Morbidelli (Ducati) e a um de Fábio Quartararo (Yamaha) e Raul Fernandez (Aprilia).
A próxima ronda é o Grande Prémio dos Países Baixos, em Assen, de 28 a 30 de junho.