Jorge Lorenzo passed Marc Marquez within sight of the flag to take his third 2016 MotoGP win at Mugello, as engine failure ended Yamaha team-mate Valentino Rossi's Italian Grand Prix.
From the second row of the grid, Lorenzo got the holeshot and powered past polesitter Rossi into the first corner to take the lead.
Rossi found the slipstream and had a big look down the inside there on lap two, but overshot slightly and Lorenzo held on.
Lorenzo and Rossi then fought it out for the opening third of the race, barely separated by more than a tenth of a second.
Then on lap nine, Rossi slowed with a mechanical problem that became obvious when his M1's engine erupted, silencing the massive crowd.
It was the second Yamaha engine failure of the day, with Lorenzo having suffered his own in the morning warm-up.
Yamaha team director Massimo Meregalli said both bikes looked to have had the same problem.
While Rossi was sidelined, Lorenzo still had a fight on his hands from Marquez.
The Honda rider gradually closed Lorenzo's gap from half a second to two tenths, then edged past momentarily at Scarperia with four laps to go.
But Marquez carried too much speed into the corner, and Lorenzo nipped back past to reclaim the lead.
Marquez had another go at his countryman, down the inside into San Donato with two laps remaining, but again ran wide mid-corner, letting Lorenzo back past.
With that, Lorenzo gained a handful of tenths, and had enough to stay ahead of Marquez, who tried pounce past again as they began the final lap.
Again, Lorenzo survived but Marquez snuck past several corners later.
Lorenzo retaliated before Marquez entered the final corner in the lead.
But Lorenzo had the superior acceleration on the run to the chequered flag, and passed Marquez to win their sensational scrap by just 0.019 seconds.
With the result, a visibly emotional Lorenzo now leads the championship by 10 points over Marquez, with Rossi now 37 behind following his DNF.
Maverick Vinales and the man who will replace him at Suzuki next year, Ducati's Andrea Iannone, started on the front row of the grid with Rossi, but both made bad starts.
Vinales dropped down to 11th and eventually finished a lonely sixth, while Iannone fell to eighth early, then 11th.
But Iannone fought his way back through the field to fourth place, then caught team-mate Andrea Dovizioso, a big mover from 13th on the grid.
Iannone and Dovizioso traded third place several times, with Iannone eventually gaining the ascendancy.
However, their battle let Dani Pedrosa catch them and buy into the fight.
Pedrosa got between the Ducatis when Dovizioso ran wide, and then passed Iannone, but he could not keep the Italian at bay.
Iannone eventually grabbed the final podium position by 0.168s over Pedrosa, with Dovizioso fifth.
Bradley Smith was the top satellite rider for Tech3 Yamaha in seventh, ahead of Danilo Petrucci, Aleix Espargaro and Michele Pirro.
Loris Baz, Alvaro Bautista and Jack Miller were all eliminated in a first-lap accident, while Scott Redding retired from a strong position due to a mechanical problem.
RESULTS - 23 LAPS:
|7||Bradley Smith||Tech3 Yamaha||Yamaha||13.340s|
|8||Danilo Petrucci||Pramac Ducati||Ducati||14.598s|
|11||Cal Crutchlow||LCR Honda||Honda||27.936s|
|12||Hector Barbera||Avintia Ducati||Ducati||35.712s|
|13||Eugene Laverty||Aspar Ducati||Ducati||38.032s|
|15||Pol Espargaro||Tech3 Yamaha||Yamaha||59.811s|
|16||Yonny Hernandez||Aspar Ducati||Ducati||1m04.397s|
|-||Scott Redding||Pramac Ducati||Ducati||Water pump|
|-||Tito Rabat||Marc VDS Honda||Honda||Withdrawn|
|-||Loris Baz||Avintia Ducati||Ducati||Accident|
|-||Jack Miller||Marc VDS Honda||Honda||Accident|