Marc Marquez prevailed in a thrilling MotoGP Dutch TT to open up his championship lead, while Alex Rins usurped Maverick Vinales late on for second.
Marquez seized the lead from pole despite not getting the best of starts, while Jorge Lorenzo shot through from 10th on the grid to take second from Cal Crutchlow at Turn 2.
Lorenzo carved through on Marquez to take the lead at Mandveen, though the Honda man retaliated at the first turn at the start of lap two.
Marquez soon found Yamaha's Valentino Rossi scything through, with the Italian quick to close down leader Lorenzo.
A front-end moment for Lorenzo at Meeuwenmeer saw Rossi run into the back of the Ducati rider, though both miraculously stayed mounted and at the head of the field.
Behind, Dovizioso took third from Marquez at the start of lap six at the first turn, though Marquez fought back at the Strubben before taking advantage of a wide Rossi a lap later at the same corner.
With the podium group consisting of the top eight in the opening stages, the battle raged hard, though Lorenzo held onto the lead for much of it.
Disaster almost struck Marquez exiting the Strubben at mid distance, when a slight nudge from Rins saw the Honda rider almost crash.
Marquez lost several spots as a result, but regrouped quickly to get back into podium contention. At the front, Andrea Dovizioso took the lead away from Ducati teammate Lorenzo at the first turn on lap 14.
Lorenzo attempted to move ahead of Dovizioso, but the Italian fought hard to hold the lead as the pair ran side by side through the fast Ruskenhoek, while Marquez leaped up to second.
With eight laps remaining, Vinales led the charge on Dovizioso, and moved ahead of the Italian briefly to head the pack, but a moment exiting Dulkersloot allowed Marquez to line up a successful pass into the final chicane.
Vinales chased the Honda rider down across the next lap, and tried to pass around the outside of De Bult. The Yamaha rider ran out wide, however, and Marquez followed suit as he defended his line, allowing Dovizioso once again into the lead.
Rossi passed his compatriot with five laps remaining, but the dueling pair allowed Marquez to regroup, and he sensationally swopped around the outside of them into Ruskenhoek.
This proved crucial for Marquez, as over the final three laps he pulled the pin, opening up an advantage of over a second to ease to his fourth win of the year to take a 41-point championship lead.
Rins fell off from the podium battle later on, but was able mount a charge, and swooped under Vinales at Ramshoek on the final lap to snatch his best-ever MotoGP result of second.
Dovizioso dropped to fourth at the flag after running wide at Turn 1 on the final lap trying to pass Rossi, who shadowed him in fifth. Crutchlow was sixth after a late mistake, while Lorenzo faded to seventh.
The top 10 was completed by Tech3's Johann Zarco, Alvaro Bautista on the Nieto Ducati and Pramac's Jack Miller.
Danilo Petrucci crashed in the early stages, with Ducati stablemates Xavier Simeon and Karel Abraham joining him on the sidelines.