A estrela da Ducati capitalizou o seu tempo recorde de volta para garantir a pole na qualificação anterior e derrotar Marco Bezzecchi e Jorge Martin.
Bagnaia tem agora quatro pontos de vantagem sobre Bezzecchi, que alinha na equipa VR46 da lenda italiana Valentino Rossi, para a sexta jornada do campeonato, no domingo.
Bagnaia, que está a recuperar de uma lesão no tornozelo, provocada pelo acidente da última vez em Le Mans, liderou com Marc Marquez, mas Jorge Martin assumiu a liderança no final da primeira volta.
Alex Marquez, que partiu em terceiro, durou apenas até à curva 1, quando saiu da disputa na pista de gravilha.
Quando as gotas de chuva começaram a salpicar o circuito caseiro da Ducati, Bagnaia recuperou a liderança a oito das 11 voltas do fim.
Sob nuvens negras, Bagnaia estava a ser perseguido por Bezzecchi, que chegou a este fim-de-semana a apenas um ponto de distância na classificação do campeonato.
Bezzechi, que arrancou em sétimo, continuou a lutar com o seu compatriota e amigo, mas Bagnaia tinha a corrida no papo, para gáudio da sua legião de fãs.
"Foi um pouco assustador no início e tive de ter cuidado para não entrar em pânico com a chuva, mas o meu ritmo foi bom. Gostei muito do dia. Mugello é lindo", afirmou Bagnaia após o seu terceiro sucesso ao sprint da época.
"Trabalho feito hoje!" acrescentou o piloto da Ducati.
Agora Bagnaia vai em busca de uma terceira vitória numa pista onde venceu há 12 meses.