Starting from pole, Marquez gave up the lead to Andrea Dovizioso at the start and when he fought back at Turn 3, his move compromised both riders, allowing Lorenzo to move to the front.
However Marquez passed his future Honda teammate at Turn 3 next time around, and started to slowly inch away from the factory Ducati duo.
Marquez's lead was up to eight tenths of a second when Dovizioso started to put pressure on Lorenzo for second.
But the Italian could only shadow Lorenzo for several laps, which allowed the Spaniard to eventually close the gap back on Marquez.
He first narrowly escaped running wide at Turn 3 without giving up second place, and then moved past Marquez at the first corner next time around.
Marquez immediately fought back, but Lorenzo pulled off another move on the same lap at Turn 9.
There was no counter-attack this time but Marquez refused to drop behind, and was all over Lorenzo as the final five laps began.
Marquez's first opportunity arose when Lorenzo ran wide at Turn 3, but Lorenzo recovered with a forceful move at Turn 9.
On the penultimate lap, Marquez made another overtake at the same turn and, while Lorenzo couldn't respond on that lap, he breezed past Marquez on the main straight.
Marquez tried to repeat his move on the last lap, but Lorenzo had better run on the outside line and kept his position, eventually crossing the line 0.130s ahead of the championship leader.
Dovizioso started to lose ground around the some moment Lorenzo took the lead for the first time, and in the end had to settle for third, 1.5s behind.
LCR Honda's Cal Crutchlow spent the entire race as best of the rest with the third Ducati GP18 of Danilo Petrucci completing the top five.
Valentino Rossi completed a solid recovery from 14th on the grid on the lead Yamaha, running eighth after the early stages and passing Alex Rins (Suzuki) and Tito Rabat (Avintia Ducati) to salvage sixth.
Dani Pedrosa (Honda) was right behind Rossi in seventh, while Rins, despite running as high as third on the opening lap, only finished eighth.
Johann Zarco (Tech 3 Yamaha) and Alvaro Bautista (Nieto Ducati) completed the top 10 as Rabat dropped as low as 11th, even though he was seventh for most of the race.
The second factory Yamaha of Maverick Vinales did not spend a single lap in the top 10 as he dropped down to 16th after the start and took only 12th ahead of Andrea Iannone (Suzuki), who went off-track at Turn 3.
KTM's Bradley Smith was 14th as Takaaki Nakagami took the final pointscoring position on the second LCR Honda.
Avintia Ducati's Xavier Simeon was the sole rider to crash out of the race.
With his third win of the season, Lorenzo is third in the standings, while Marquez's points lead is up to 59 points over Rossi.
|10||Xavier Simeon||Ducati||10||14'29.160||18 Laps||18 Laps|