The Dutchman (Alpecin-Fenix) lunged his bike towards the finish line to beat Van Aert (Lotto Soudal) by less than half a wheel after 244km of racing that included a leg-breaking 17 climbs.
The two went clear with Julian Alaphilippe (Deceuninck-Quick-Step) when the Frenchman attacked over the Steenbeekdries and Taaienberg climbs around 35km from the finish.
Disaster however struck when the world champion hit a motorbike that was parked next to the road with his right shoulder, sending him crashing out of the race.
By the time that the remaining two reached the Kruisberg with 32km to go, their lead was more than 30 seconds over the main chasing group.
They extended the gap to well over a minute as they tackled the last ascents of the Oude Kwaremont and Paterberg shoulder to shoulder.
Having matched each other over the climbs, they combined their efforts to preserve their advantage on the 14km run-in to the finishing town.
They reached the final kilometre with a sizeable gap, which afforded them the comfort of a tactical sprint without the fear of marking each other out of the race as they did the week before at Gent-Wevelgem.
Van der Poel positioned himself at the front, continuously looking over his shoulder to keep van Aert in check.
As the metres dwindled and the peloton started looming behind, they both kicked at the same moment with Van der Poel just able to hold his position at the front.
It was a sweet victory for Van der Poel, who crashed in his first attempt at the race last year before eventually finishing fourth.
Former champion Alexander Kristoff (UAE Team Emirates) won the bunch sprint to collect third on the day.
Alaphilippe showed his intentions when he launched his first attack shortly after the day’s main breakaway was neutralised with 50km to go. He dragged teammate Dries Devenyns and Dylan van Baarle (Ineos) with him, but the surge ultimately came to nothing.
Alaphilippe attacked again on the Koppenberg with 45km to go and was joined by Anthony Turgis (Total Direct Energie) over the top. The group swelled to nine – including Van der Poel and Van Aert – with 42km to go, but they were soon caught by more riders.
The day’s big break consisted of Gregor Mühlberger (Bora-Hansgrohe), Samuele Battistella (NTT), Danny van Poppel (Circus-Wanty Gobert), Gijs van Hoecke (CCC), Dimitri Peyskens (Bingoal-Wallonie Bruxelles) and Fabio van den Bossche (Sport Vlaanderen-Baloise).
They built a maximum lead of just over seven minutes.
|1||Mathieu Van der Poel||NED||Alpecin-Fenix|
|2||Wout van Aert||BEL||Team Jumbo-Visma|
|3||Alexander Kristoff||NOR||UAE Team Emirates|
|4||Anthony Turgis||FRA||Total Direct Energie|
|7||Oliver Naesen||BEL||AG2R la Mondiale|
|8||Dylan Van Baarle||NED||Ineos Grenadiers|
|9||John Degenkolb||GER||Lotto Soudal|
|10||Tiesj Benoot||BEL||Team Sunweb|