Verstappen’s triumph, the 17th of his career, was greeted with emphatic celebrations by the 70,000-strong Zandvoort crowd.
Hamilton finished as runner-up, with Valtteri Bottas third in the other Mercedes.
Seven-time world champion Hamilton, who spent the final third of Sunday’s race complaining about his team’s strategy, now trails Verstappen by three points.
The Briton was also forced to chase the fastest lap on the final lap after team-mate Bottas defied an order not to beat Hamilton’s previous best time.
Verstappen’s orange army created one of the best Formula One atmospheres of recent times on the sport’s return to Holland after 36 years away. And their star man did not disappoint with a commanding win from pole.
The Dutchman roared away from his starting marks to keep Hamilton at bay in the 262-metre charge to the opening Tarzanbocht and by the end of the opening lap he was already 1.7 seconds clear of his rival.
Hamilton blinked first, stopping for new rubber on lap 20, but his Mercedes crew were slow changing the Briton’s front-right tyre, costing him a second.
Verstappen headed for the pits the next time round and emerged ahead of Hamilton – the gap reduced from three seconds to 1.5.
Mercedes rolled the strategy dice by putting Bottas on a one-stopper. The primary hope was that Bottas would slow Verstappen down and allow Hamilton to perform the undercut at his next change of tyres.
Verstappen wiped out Bottas’ 10-second advantage in just seven laps.
“It is going to be absolutely critical to catch and pass if we can,” Verstappen was told by his race engineer, Gianpiero Lambiase.
On lap 30, on the exit of the final corner, Verstappen made his pass, moving into Bottas’ tow and then sailing round the outside of the Mercedes on the start-finish straight.
Hamilton followed Verstappen through and was within seven tenths only to see his Red Bull rival extend his lead to 1.6 seconds by the end of the lap and three seconds when Mercedes pulled the Briton in for a second stop on lap 39.
But, after Verstappen stopped the next time round, he emerged comfortably ahead of Hamilton.
“We called our bluff too soon,” complained the Mercedes driver. Moments later he was on the radio again. “I had so much life left in that tyre,” Hamilton said. “I don’t know why we rushed it.”
Hamilton started to draw Verstappen in again, but the 36-year-old was warned by race engineer Peter Bonnington to make his rubber last.
“I am pushing to close this gap, man,” Hamilton snapped. “Come on.”
But Hamilton failed to make any impression on Verstappen.
Pierre Gasly finished fourth, with Ferrari’s Charles Leclerc and Carlos Sainz fifth and sixth respectively.
In a race of few incidents, Lando Norris and Sergio Perez banged wheels in the battle for ninth. Perez took the position with Norris 10th for McLaren.
Verstappen said after the race: “The expectations were high coming into the weekend and it is not easy to fulfil that so I am so happy to win here and to take the lead of the championship.
“It is definitely a very good day. Mercedes tried to make it very difficult for us.”
Hamilton added: “I was flat out, I pushed as hard as I could, but they were too quick for us.
“The last lap was one of the best parts of the race. I am looking forward to coming back here next year.”