Francesco Bagnaia prevented Marco Bezzecchi from completing a Dutch TT clean sweep as the reigning MotoGP world champion prevailed at Assen on Sunday.
Bagnaia was never headed after passing Brad Binder for the lead, with Sprint winner Bezzecchi unable to get close enough to the Lenovo Ducati rider to attempt a pass once he hauled himself up to second place.
Binder had managed to repel a determined attack from Aleix Espargaro and Jorge Martin to cross the line in third, but the Red Bull KTM rider was left deflated again after he was demoted one position for exceeding the track limits on the last lap, costing him a podium place for the second time this weekend after he suffered the same fate in the Sprint race on Saturday.
Repsol Honda's Marc Marquez withdrew from the race on Sunday morning after aggravating the injuries he sustained in a crash at the previous round at the Sachsenring in Germany.
Binder made a sensational start from the second row to lead into the first corner, passing Bagnaia on the inside with pole man Bezzecchi in third.
On lap two, Jack Miller came off the Red Bull KTM at Turn 1 after he was overtaken by Maverick Viñales. Miller had passed the Aprilia rider moments before at the final chicane at the end of the opening lap.
Bagnaia made his move for the lead on the third lap past Binder, with Bezzecchi in close contention.
Fabio Quartararo, who was down in 12th on the opening lap after a poor start from the second row, crashed heavily after tucking the front on lap four, taking out Pramac Ducati's Johann Zarco.
The Monster Energy Yamaha rider, who sealed his first podium of the season in the Sprint race, looked badly beaten up as he was helped away from the incident by fellow Frenchman Zarco and the marshals.
Viñales was making smooth progress and was up to fifth after passing Luca Marini (VR46 Ducati), but the Spaniard's race then came to an unceremonious end when he slid off into the gravel on lap four.
Bagnaia was still leading from the front on lap nine but the Italian was unable to break clear of Binder and Bezzecchi, with Aprilia Racing's Espargaro on his own in fourth.
Espargaro was riding with a damaged wing on the front of his factory RS-GP23 after colliding with Marini at the beginning of the race into the first corner.
Bagnaia was now pushing hard to try and put some daylight between himself and Binder, who was hanging on doggedly. Bezzecchi in third was losing some ground on the leaders but had 1.4s in hand over Espargaro behind him after 11 laps.
Takaaki Nakagami, who was lying seventh, received a Long Lap penalty for exceeding track limits. The LCR Honda rider re-joined in eighth place and remained on course for his best result of the season.
Bagnaia's lead was up to 0.8s over Binder but Bezzecchi was on the move and claimed second place on the VR46 machine to take up the chase.
However, he lost a few tenths in the process of passing Binder and defending his lines to prevent the KTM man hitting back, allowing Bagnaia to extend his cushion to 1.2s on lap 18.
With six laps to go, Bagnaia was 0.9s ahead of Bezzecchi, with Binder dropping back in third into the clutches of Espargaro.
Sachsenring double winner Jorge Martin was fifth on the Pramac Ducati as he tried to close the deficit to Espargaro and Binder.
On the final two laps, Bagnaia was maintaining a gap of around one second over Bezzecchi but the real battle was for third, with Binder, Espargaro and Martin vying for the final rostrum spot.
However, the top four remained unchanged, with no final last-gasp overtakes possible on the last lap.
Bagnaia bagged another maximum haul of 25 points, taking the win over Bezzecchi by 1.2s.
Binder was only 0.3s down in third but in an unexpected twist, the KTM man – just as he had in the Sprint race – was demoted one place to fourth for exceeding the track limits, moving Espargaro into the final position on the rostrum.
Espargaro had only just grabbed fourth on the line by nine thousandths of a second from Martin, who remained in fifth after Binder's demotion.
Bagnaia now leads the standings by 35 points from Martin, who is only one point ahead of Bezzecchi.
There were only 14 finishers in all, with Fabio Di Gianantonio crashing out of ninth place at Turn 5.
Enea Bastianini (Lenovo Ducati) was also among the fallers along with Miller, Zarco, Quartararo and Viñales, while Iker Lecuona (Repsol Honda) and RNF Aprilia's Miguel Oliveira retired in the pits.
MOTUL TT ASSEN
Race Classification after 26 laps = 118.092 km
1 Francesco BAGNAIA ITA 1 40'37.640 174.425 Ducati Lenovo Team
72 Marco BEZZECCHI ITA2 40'38.863 174.3 1.22320 Mooney VR46 Racing Team
41 Aleix ESPARGARO SPA3 40'39.565 174.2 1.92516 Aprilia Racing
33 Brad BINDER RSA4 40'39.168 174.2 1.52813 Red Bull KTM Factory Racing
89 Jorge MARTIN SPA5 40'39.574 174.2 1.93411 Prima Pramac Racing
73 Alex MARQUEZ SPA6 40'50.077 173.5 12.43710 Gresini Racing MotoGP
10 Luca MARINI ITA7 40'51.814 173.3 14.1749 Mooney VR46 Racing Team
30 Takaaki NAKAGAMI JPN8 40'52.256 173.3 14.6168 LCR Honda IDEMITSU
21 Franco MORBIDELLI ITA9 41'06.975 172.3 29.3357 Monster Energy Yamaha MotoGP
37 Augusto FERNANDEZ SPA10 41'11.376 172.0 33.7366 GASGAS Factory Racing Tech3
32 Lorenzo SAVADORI ITA11 41'12.724 171.9 35.0845 Aprilia Racing
25 Raul FERNANDEZ SPA12 41'17.262 171.6 39.6224 CryptoDATA RNF MotoGP Team
6 Stefan BRADL GER13 41'20.144 171.4 42.5043 LCR Honda CASTROL
94 Jonas FOLGER GER14 41'23.249 171.1 45.6092 GASGAS Factory Racing Tech3
49 Fabio DI GIANNANTONIO ITA 28'22.457 172.8 8 laps Gresini Racing MotoGP
27 Iker LECUONA SPA 22'34.010 169.0 12 laps Repsol Honda Team
88 Miguel OLIVEIRA POR 19'09.837 170.6 14 laps CryptoDATA RNF MotoGP Team
23 Enea BASTIANINI ITA 9'32.489 171.3 20 laps Ducati Lenovo Team
12 Maverick VIÑALES SPA 4'48.675 169.9 23 laps Aprilia Racing
20 Fabio QUARTARARO FRA 3'16.275 166.6 24 laps Monster Energy Yamaha MotoGP
5 Johann ZARCO FRA 3'16.449 166.4 24 laps Prima Pramac Racing
43 Jack MILLER AUS 1'40.963 161.9 25 laps Red Bull KTM Factory Racing