Bagnaia, who had started from fifth on the grid, dropped to ninth on the first lap but recovered to take the ninth Tour lead, pulling over a second away to claim his second win of the 2022 season.
Shock poleman Fabio Di Giannantonio took the holeshot on his year-old Gresini Ducati driven by VR46 duo Luca Marini and Marco Bezzecchi.
Di Giannantonio was quickly ousted from the lead, first by Marini at Turn 4 on lap one and then by Bezzecchi at Turn 11.
Bezzecchi then sped past his GP22 teammate Marini down the main straight to take the lead at the start of lap two on his 2021 Ducati.
For the next eight laps, Bezzecchi would run at the front of the field while Bagnaia and reigning world champion Quartararo deftly worked their way up to the podiums.
Unable to make a move down the main straight on his underpowered Yamaha M1, Quartararo passed the likes of Aprilia’s Aleix Espargaro, Di Giannantonio and Marini on laps two through four at Turn 4, Turn 11 and Turn 6.
Quartararo, second at the start of Lap 5 and fending off a retaliation from Marini at Turn 1, was unable to put his Yamaha in front as Bagnaia sped past at Turn 1 on Lap 6.
The factory Ducati rider continued to extend Bezzecchi’s lead at the front of the field and made his decisive move into Turn 1 on lap nine.
Bagnaia quickly put a second place between himself and the group behind, who would be led by Quartararo, after defending third place again from Marini on lap nine before passing Bezzecchi at Turn 10 of Tour 11.
Quartararo put daylight between himself and the quarreling VR46 Ducatis as Aleix Espargaro began to make his way onto the podium in the second half of the 23-lap race.
Although Quartararo would fall a few tenths to Bagnaia in the twisty sections of the track, the Yamaha’s power deficit kept him from making any real gains against the Italian.
The gap would narrow to 0.635s at the checkered flag, but Bagnaia held on to take victory on home soil as Quartararo extended his championship lead to eight points.
Aleix Espargaro moved up to third ahead of Bezzecchi at Turn 10 on Lap 17 and pulled back by six tenths to take a fourth straight third and cement his position as second in the Championship.
In the end, Johann Zarco finished fourth on his Pramac Ducati driven by VR46 duo Bezzecchi and Marini as their mentor and team owner Valentino Rossi retired his famous #46 from MotoGP.
KTM’s Brad Binder jumped from 16th on the grid to seventh by lap two and held that position to the checkered flag ahead of LCR Honda’s Takaaki Nakagami and factory second KTM’s Miguel Oliveira.
Completing the top 10 was Marc Marquez on the factory Honda, who announced on Saturday he would be taking a break from racing after Mugello to undergo a fourth operation in 2020 on his right arm, which he had badly fractured.
The six-time world champion is likely to miss the rest of the 2022 season but finished in a struggling 10th place when teammate Pol Espargaro was sidelined.
Di Giannantonio ended up dropping to 11th ahead of Aprilia’s maverick Vinales, who saved 12th after qualifying 24th. Pramac’s Jorge Martin, LCR’s Alex Marquez and Jack Miller on the factory team’s second Ducatis claimed the final points.
Le Mans race winner Enea Bastianini’s championship hopes suffered another dampening when he retired sixth on lap 14.
He was joining Suzuki riders Joan Mir and Alex Rins on the sidelines when both crashed out of the race on lap eight.