Bagnaia, que largou da quarta posição da grelha, cortou a meta com o tempo de 19.41,354 minutos, batendo o compatriota Enea Bastianini (Ducati) por 0,107 segundos, com o espanhol Marc Márquez (Ducati) na terceira posição, a 1,701 segundos.
A corrida ficou marcada pela queda do espanhol Jorge Martin (Ducati), líder do campeonato, logo na primeira volta, quando comandava depois de arrancar da 'pole position'.
O piloto madrileno pagou cara a escolha de um pneu duro na frente da sua Ducati, caindo na curva 15 do circuito de Mandalika, quando as gomas ainda não estavam à temperatura ideal, ao ver escorregar a roda dianteira.
Martin nunca largou a mota enquanto deslizou no asfalto e evitou que se desligasse, retomando a corrida na 21.ª e última posição.
Ainda conseguiu recuperar até ao 10.º lugar final, mas já sem conseguir pontuar e minimizar as perdas no campeonato (pontuam os nove primeiros classificados da sprint).
Quem também fez uma recuperação a lembrar velhos tempos foi Marc Márquez, que arrancou do 12.º posto da grelha depois de ter sofrido duas quedas durante a qualificação.
O seis vezes campeão mundial saltou do 12.º para o quinto lugar ainda a meio da primeira volta, chegando a segundo quando aproveitou um erro do italiano Marco Bezzecchi (Ducati). No entanto, já não segurou o ímpeto de Enea Bastianini na parte final, cortando a meta no degrau mais baixo do pódio.
"A Q2 tem sido um pesadelo para mim. Saindo do 12.º lugar, o terceiro lugar é mais do que bom", frisou o espanhol.
Alheio a todos os dramas ficou Bagnaia, que partia para esta prova com uma desvantagem de 24 pontos no campeonato.
"Sabíamos que era fundamental recuperar pontos ao Jorge Martin. Durante a manhã, aprendi muito sobre como ser rápido neste circuito. Na corrida, quando vi que ele caiu, percebi que não era sítio para atacar", explicou o bicampeão mundial.
Com estes resultados, 'Pecco' Bagnaia recuperou 12 dos 24 pontos de atraso no campeonato.
Jorge Martin manteve os 341, mas viu o rival italiano aproximar-se para os 329, com Enea Bastianini em terceiro, com 291.
Miguel Oliveira, apesar da ausência, manteve o 14.º lugar, com 71 pontos. O português caiu na primeira sessão de treinos livres, na sexta-feira, e sofreu múltiplas fraturas no pulso direito, regressando a Portugal onde será operado.
No domingo, disputa-se a corrida principal do Grande Prémio da Indonésia.