Marc Marquez claimed a sixth successive victory as he took the chequered flag in Mugello, but only after an intense battle with fellow Spaniard Jorge Lorenzo.
Marquez crossed the line on his Repsol Honda just 0.121 seconds ahead of Lorenzo and his Movistar Yamaha team-mate Valentino Rossi, who took third on the occasion of his 300th Grand Prix.
However, all eyes had been on the battle of the Spaniards at the front as they traded the lead over the final laps.
Marquez went ahead with seven laps to go, but Lorenzo soon took it back and held the advantage on the penultimate lap, only for Marquez to come back at him again.
This time he made it stick for a win that extends his lead in the standings to 53 points over Rossi.
"It was very tiring," Marquez said. "It was the most difficult race of the year because Yamaha and Jorge were very fast but then at the end the tyres have started to go and I was well placed."
Although Rossi had to settle for third, crossing a little under three seconds behind Marquez, he was treated to huge celebrations from his home fans as he stood on the podium having started back in 10th.
"It was a good race," he said. "It's a shame about the mistake in qualifying which meant I started 10th. Although I could not catch the leaders, it was good to get close to them. I was fast, I was here on the podium in front of these fans at Mugello and I dedicate this podium to them."
Dani Pedrosa (Repsol Honda Team) and rookie Pol Espargaro (Monster Yamaha Tech3) were the next two across the line.
Two Englishmen were in the wars, with Bradley Smith walking away unharmed from a lap four crash, while German Stefan Bradl struck the bike of Cal Crutchlow to send both to the ground, again avoiding injury.