The Monlau Suter poleman held his advantage away from the start and thereafter came under serious threat only when title rival Andrea Iannone (Speed Master Speed Up), who had started 10th, managed to close onto his tail on the fourth lap.
The pair remained locked together for the next two laps, and when Iannone dived down the inside at Turn 12 - with Marquez seizing the initiative back almost immediately - it appeared to set the stage for a showdown between the pair.
That prospect was spoiled shortly after however when Iannone lost the front at Turn 1, sliding out into the gravel. He was able to rejoin but did so down in 26th.
As the Italian fell Mika Kallio (Marc VDS Kalex) and Alex de Angelis (Forward Suter) – staging his own recovery after starting from eighth – deprived Marquez the luxury of breathing space, although neither was able to mount a serious challenge.
Indeed in the final laps they began to quarrel among themselves, and as Kallio passed de Angelis for second at Turn 1 three laps from the end Marquez eased away towards the win.
De Angelis managed to steal into second at Turn 12 on the final lap, but Kallio dived back down the inside to seal second, and with it his first Moto2 podium of the year.
Pol Espargaro (Pons Kalex) was never likely to be a victory contender after struggling in the wet qualifying conditions, but he did manage to convert 17th on the grid into fourth at the flag. He moves into second in the championship as a result.
Thomas Luthi (Paddock Suter) beat Simone Corsi (Ioda FTR) to fifth, while Tech 3's Bradley Smith – fourth for much of the race before slipping back – and Xavier Simeon rounded out the top eight.
Iannone recovered to 16th at the flag, not enough to prevent himself slipping two places to fourth in the championship.
Marc VDS's Scott Redding also lost ground after being taken out by Toni Elias on the first lap. Elias (Aspar Suter) later retired after his own crash.