Fabio Quartararo slotted in behind Marquez off the line on the Petronas Yamaha, with Pramac Ducati’s Jack Miller jumping to third ahead of the works Yamaha of Maverick Vinales.
Miller made light work of Quartararo on the run into Turn 12 on the opening lap for second, with Marquez close to two seconds clear at the front by the third tour.
Quartararo soon came under threat from Vinales, who eventually found a way through after powering past into Turn 16 on lap five.
Once free of the SRT rider, Vinales was able to immediately put some daylight behind him and set about hunting down Miller.
The massive speed of the Ducati ensured Miller would remain a stubborn obstacle for Vinales for some time, but the Spaniard finally found a way through on lap eight, using the superior edge grip of the Yamaha to execute a daring move around the outside of Miller at Turn 4.
Works Ducati rider Andrea Dovizioso would get through on Miller eight laps later, and began to chip away at the second gap Vinales held in second.
With five laps to go, Dovizioso had caught Vinales, and two laps later he capitalised on a slight mistake from his rival through the Turn 14/15 chicane to grab second.
Marquez got his lead up to over six seconds in the latter stages to cruise to his eighth win of the season and a 98-point lead over second-placed Dovizioso, which means the upcoming Thailand race will offer up Marquez’s first chance to secure a sixth MotoGP title.
After losing second to Dovizioso, Vinales dropped a further position as Miller carved past at Turn 1 on the final lap to finish third.
Quartararo was a distant fifth ahead of LCR Honda’s Cal Crutchlow, who passed Aleix Espargaro’s Aprilia after a battle that raged for much of the race.
Valentino Rossi faded to eight on the second works Yamaha, with Alex Rins recovering to ninth from a long-lap penalty awarded to him for wiping out Franco Morbidelli (Petronas Yamaha) at Turn 12 on lap one.
Takaaki Nakagami (LCR) prevailed in a fierce fight with Andrea Iannone (Aprilia) for 10th ahead, Ducati’s Danilo Petrucci and Tech 3 KTM’s Miguel Oliveira.
Joan Mir (Suzuki) and Avintia Ducati’s Tito Rabat rounded out the points scorers.
Jorge Lorenzo was a factor for points early on, but the Honda rider faded to 20th in the end behind Aprilia wildcard Bradley Smith.
Mika Kallio’s first race in place of Johann Zarco ended with a 17th-place finish, with teammate Pol Espargaro a non-starter after fracturing his wrist in a crash on Saturday.