Marc Marquez secured just his second pole position of the season and first at the Dutch TT, while Valentino Rossi will start on the front row despite a crash in practice on Saturday.
Repsol Honda rider and MotoGP championship leader Marquez beat Cal Crutchlow to the front of the grid by just four hundredths of a second with a final lap of one minute, 32.791 seconds.
The result will be a huge boost for the four-time champion, who has seen his advantage in the standings cut to 27 points after successive victories for Jorge Lorenzo.
Ducati rider Lorenzo's only premier class win in Assen came in 2010 and he will have his work cut out if he is to challenge for the top step of the podium after qualifying 10th.
Beside Marquez and Crutchlow on Sunday will be Rossi, who slid out at turn seven during FP4 but managed to avoid having to go through Q1.
The veteran Movistar Yamaha man has triumphed at Assen 10 times across the classes - it was the scene of his most recent victory in 2017 - and he was just 0.059 seconds slower than Marquez.
Andrea Dovizioso (Ducati), Alex Rins (Suzuki Ecstar) and Maverick Vinales (Movistar Yamaha) will start on the second row.
1. Marc Marquez (Repsol Honda): 1:32.791secs
2. Cal Crutchlow (LCR Honda): 1:32.832s
3. Valentino Rossi (Movistar Yamaha): 1:32.850s
4. Andrea Dovizioso (Ducati): 1:32.870s
5. Alex Rins (Suzuki Ecstar): 1:32.933s
6. Maverick Vinales (Movistar Yamaha): 1:32.984s
7. Aleix Espargaro (Aprilia): 1:33.029s
8. Johann Zarco (Monster Yamaha Tech 3): 1:33.072s
9. Andrea Iannone (Suzuki Ecstar): 1:33.120s
10. Jorge Lorenzo (Ducati): 1:33.167s