Jorge Lorenzo jumped from 10th to first on the opening lap but was made to settle for a seventh-place finish as championship leader Marc Marquez returned to winning ways at the Dutch TT on Sunday.
Ducati rider Lorenzo put his recent MotoGP™ struggles behind him to claim back-to-back victories in Italy and Catalunya in the previous two races and made a lightning start in Assen.
But Lorenzo was unable to shake off the chasing pack after unexpectedly finding himself out in front, leading to an eight-way battle for the lead.
Jostling for position took place mostly behind Lorenzo until he was overtaken by team-mate Andrea Dovizioso on lap 14 and, after momentarily riding side by side with his colleague, the 31-year-old started to slip down the field.
Maverick Vinales briefly took the lead as the Ducati challenge faded, before polesitter Marquez - forced off by Alex Rins earlier in the race - re-took top spot with seven laps to go, overtaking Vinales at Turn One.
Marquez and Vinales ran wide to allow Dovizioso to once again head the pack, and Valentino Rossi also led for a period in a thrilling race in which every rider seemed to take their turn at the front.
But Marquez emerged from a three-way battle with Dovizioso and Rossi with the lead, and finally put his stamp on the position, opening up a 1.5-second advantage.
Rins stole in to claim second place ahead of Vinales, with Dovizioso and Rossi slipping to fourth and fifth respectively in the closing laps.
Lorenzo, after his early heroics, crossed the line in seventh, leaving Marquez to extend his lead at the top of the riders' standings to 41 points from Rossi.
IN THE POINTS
1. Marc Marquez (Repsol Honda)
2. Alex Rins (Suzuki Ecstar) +2.269 seconds
3. Maverick Vinales (Movistar Yamaha) +2.308
4. Andrea Dovizioso (Ducati) +2.422
5. Valentino Rossi (Movistar Yamaha) +2.963
6. Cal Crutchlow (LCR Honda) +3.876
7. Jorge Lorenzo (Ducati) +4.462
8. Johann Zarco (Monster Yamaha Tech 3) +7.001
9. Alvaro Bautista (Angel Nieto) +7.541
10. Jack Miller (Alma Pramac) +13.056
11. Andrea Iannone (Suzuki Ecstar) +14.255
12. Pol Espargaro (KTM) +15.876
13. Aleix Espargaro (Aprilia) +15.986
14. Scott Redding (Gresini) +16.019
15. Dani Pedrosa (Repsol Honda) +16.043
1. Marc Marquez (Repsol Honda) 140
2. Valentino Rossi (Movistar Yamaha) 99
3. Maverick Vinales (Movistar Yamaha) 93
4. Johann Zarco (Monster Yamaha Tech 3) 81
5. Andrea Dovizioso (Ducati) 79
1. Movistar Yamaha 192
2. Repsol Honda 181
3. Ducati 154
4. Alma Pramac Racing 126
5. Suzuki Ecstar 124