However, a race-long battle with the Ducatis of Dovisizioso and Jorge Lorenzo ensued, and the reigning champion had to make do with second after the former passed him late in the race and held off his last-corner challenge.
As Marquez fought off Dovizioso over the opening lap, Lorenzo escaped to the tune of a second, but when the order stabilised, he was soon reeled in by the Honda man.
Marquez retook the spot shortly thereafter at Turn 7, but again couldn't shake Dovizioso - who slipstreamed past on the main straight with seven laps to go.
Dovizioso made it three-wide for the lead on the following straight and was briefly ahead at Turn 4, but subsequently ran wide and handed first back to Marquez. Both riders exchanged positions time and again over the remaining 10 laps, but Dovizioso's incredible pace was hard for Marquez to match up to. The last corner was completely on the limit, but this is MotoGP.
Marquez lunged down the inside of the Italian, forcing both wide, but Dovizioso managed a better exit and clung on to win. Frenchman Johann Zarco managed to finish fifth on his Tech 3 Yamaha ahead of the two factory bikes of Maverick Vinales and Valentino Rossi, meaning that Dovisizioso moves up to second in the championship table 16 points behind Marquez and eight ahead of third-placed Vinales, with Rossi a further nine points behind. KTM's Mika Kallio picked up the last points finishing 10th, ahead of Suzuki's Andrea Iannone.
Vinales (Movistar Yamaha) will start the race in fourth while team-mate Valentino Rossi is back in seventh and Britain's LCR Honda rider Cal Crutchlow finished qualifying in ninth.