Championship leader Jorge Martin completed the Ducati lockout of the podium ahead of Marc Marquez in fourth and GasGas’s Pedro Acosta in fifth.
Demoted three grid places due to an incident with Alex Marquez (Gresini Ducati) on Friday, Bagnaia would start his home race at Mugello from fifth.
He went around the outside of Bastianini and Marc Marquez to exit the first corner in second place, behind pole-sitter Martin (Pramac Ducati).
Bagnaia made a move on the inside of the next turn to wrest the lead from the Spaniard, with Bastianini third and Marquez fourth. Those four riders broke from the field early with the chasing pack led by Acosta.
Repeating his early success from the Sprint, Jack Miller (Red Bull KTM) again started well, rising to 13th place by the end of the first lap but the early aggression did not last and he was unable to make further progress.
Ducati’s leading quartet steadily increased their advantage over the rest of the field as they attempted to outdo each other.
Despite his main rivals matching his rapid lap times, Bagnaia was able to hold his margin out the front between 0.5s and 0.7s for most of the race.
He set the quickest lap of the race on the Lap 5 with a 1:45.770s. It took second-placed Martin five laps to nullify the advantage of that one lap finally inside of 0.5s to Bagnaia as they chalked off the tenth lap.
Bastianini was significantly busier than his team-mate through the middle of the race, doing his utmost to keep Marc Marquez at bay as the gap seesawed from 0.2s to 0.4s.
The #93 overtook the Beast on Lap 18 and was into the podium places with five laps, the next target being Martin at the best part of a second up the road.
Nearing the end of the race, both Bastianini and Martin went into all-out attack.
While Marquez was planning his move on the Beast, Martin had reduced Bagnaia’s lead from a second to only 0.4s with three laps remaining.
Martin was not to be ruled out of the race win when his next lap decreased the deficit to 0.25s to pile the pressure on home hero Bagnaia.
A response was required to hold on to the win and the world champion delivered by increasing the margin to 0.8s at the start of the final lap.
The podium places were to take another twist halfway through this penultimate lap when Bastianini used his better-managed tyres to pass Marquez for third place.
Bastianini risked it all on the final lap and while his team-mate was too far ahead to catch in only a single lap, second place in front of Martin was still a possibility.
Martin had given his chase of Bagnaia everything he had but had overworked his tyres in the process.
Unable to keep up with Bagnaia any longer, Martin expected he would have a safe second place only to cost himself four championship points as Bastianini overtook him on the final turn.
Bagnaia won the Italian Grand Prix for a third consecutive time by a margin of 0.799s over Bastianini, who in turn beat Martin by a tenth of a second.
Marquez was 1.1s behind the podium in fourth and Acosta celebrated his new factory contract with fifth.
Miller finished in 16th, missing out on the points-scoring positions by 4.2s.
A perfect weekend for Bagnaia means he leaves his home track only 18 points behind championship leader Martin, with Marquez now 17 points further behind in third place.
There is now nearly a month break before the next round at the TT Circuit of Assen is held on 28-30 June.
Race results: Grand Prix race
Pos | Num | Rider | Nat | Team | Bike | Time/Gap |
1 | 1 | F. Bagnaia | ITA | Ducati Lenovo Team | Ducati | 40:51.385 |
2 | 23 | E. Bastianini | ITA | Ducati Lenovo Team | Ducati | +0.799 |
3 | 89 | J. Martin | ESP | Prima Pramac Racing | Ducati | +0.924 |
4 | 93 | M. Marquez | ESP | Gresini Racing MotoGP | Ducati | +2.064 |
5 | 31 | P. Acosta | ESP | Red Bull GASGAS Tech3 | KTM | +7.501 |
6 | 21 | F. Morbidelli | ITA | Prima Pramac Racing | Ducati | +9.890 |
7 | 49 | F. Di Giannantonio | ITA | Pertamina Enduro VR46 Racing Team | Ducati | +10.076 |
8 | 12 | M. Viñales | ESP | Aprilia Racing | Aprilia | +11.683 |
9 | 73 | A. Marquez | ESP | Gresini Racing MotoGP | Ducati | +13.535 |
10 | 33 | B. Binder | RSA | Red Bull KTM Factory Racing | KTM | +15.901 |
11 | 41 | A. Espargaro | ESP | Aprilia Racing | Aprilia | +19.182 |
12 | 25 | R. Fernandez | ESP | Trackhouse Racing | Aprilia | +20.307 |
13 | 72 | M. Bezzecchi | ITA | Pertamina Enduro VR46 Racing Team | Ducati | +20.346 |
14 | 88 | M. Oliveira | POR | Trackhouse Racing | Aprilia | +23.292 |
15 | 42 | A. Rins | ESP | Monster Energy Yamaha MotoGP Team | Yamaha | +23.613 |
16 | 43 | J. Miller | AUS | Red Bull KTM Factory Racing | KTM | +28.417 |
17 | 44 | P. Espargaro | ESP | Red Bull KTM Factory Racing | KTM | +28.778 |
18 | 20 | F. Quartararo | FRA | Monster Energy Yamaha MotoGP Team | Yamaha | +30.622 |
19 | 5 | J. Zarco | FRA | CASTROL Honda LCR | Honda | +31.457 |
20 | 10 | L. Marini | ITA | Repsol Honda Team | Honda | +32.310 |
21 | 32 | L. Savadori | ITA | Aprilia Racing | Aprilia | +46.724 |
DNF | 30 | T. Nakagami | JPN | IDEMITSU Honda LCR | Honda | 9 laps |
DNF | 36 | J. Mir | ESP | Repsol Honda Team | Honda | 6 laps |
DNF | 37 | A. Fernandez | ESP | Red Bull GASGAS Tech3 | KTM | 4 laps |
Race winner: 23 laps
Riders’ championship
Pos | Rider | Nat | Pts |
1 | J. Martin | ESP | 171 |
2 | F. Bagnaia | ITA | 153 |
3 | M. Marquez | ESP | 136 |
4 | E. Bastianini | ITA | 114 |
5 | P. Acosta | ESP | 101 |
6 | M. Viñales | ESP | 100 |
7 | B. Binder | RSA | 85 |
8 | A. Espargaro | ESP | 82 |
9 | F. Di Giannantonio | ITA | 74 |
10 | A. Marquez | ESP | 51 |
11 | M. Bezzecchi | ITA | 45 |
12 | R. Fernandez | ESP | 32 |
13 | F. Quartararo | FRA | 32 |
14 | F. Morbidelli | ITA | 31 |
15 | M. Oliveira | POR | 31 |
16 | J. Miller | AUS | 27 |
17 | A. Fernandez | ESP | 13 |
18 | J. Mir | ESP | 13 |
19 | J. Zarco | FRA | 9 |
20 | A. Rins | ESP | 8 |
21 | T. Nakagami | JPN | 8 |
22 | D. Pedrosa | ESP | 7 |
23 | L. Marini | ITA | 0 |
24 | S. Bradl | GER | 0 |
25 | P. Espargaro | ESP | 0 |
26 | L. Savadori | ITA | 0 |