Verstappen, who started the race in pole position, led for 66 of the 70 laps of the Hungaroring.
At one point Verstappen led Hamilton by 20 seconds after the Briton was called in on lap 49 to change his tyres.
But Hamilton emerged from the pit stop and ate into the Dutchman's advantage. He overtook him with three laps remaining.
The victory - Hamilton's seventh in Hungary and his 81st overall - put him on 250 points after 12 of the 21 races in the 2019 season.
Success allowed Hamilton to increase his lead over his Mercedes stablemate Valtteri Bottas who has 188 points. Verstappen's third consecutive podium finish allowed him to close to within seven points of Bottas
"I feel really grateful for the day,” said Hamilton. "And for the team for continuing to believe in me and for continuing to push the limits and to take a risk, a chance on me. We’ve been together seven years and it always feels like a new win.”