The world champion, who was back on the track after his Hockenheim horror show, saw off Verstappen by 0.165 seconds.
Ferrari driver Sebastian Vettel finished third ahead of Red Bull's Pierre Gasly. Valtteri Bottas did not set a time after Mercedes discovered a fault with his engine.
Hamilton crashed from the lead at last weekend's rain-disrupted German Grand Prix before crossing the line in 11th place.
The Briton had been battling a virus but, after revealing he slept for three days ahead of this weekend's race, the last ahead of Formula One's summer break, he returned to the summit of the time sheets.
No other driver has won the Hungarian Grand Prix more times than Hamilton, and the 34-year-old will go in search of his seventh victory here on Sunday.
Hot on his heels will be Verstappen, the 21-year-old who took advantage of Hamilton's mistake-ridden afternoon in Germany, to claim his second win from the last three races.
The early signs suggest it could be a three-way fight for victory with Vettel, who drove from last to second at his home race, just one thousandth of a second slower than Verstappen.
Bottas should have reduced the championship deficit to Hamilton at the last race, but crashed out in the closing stages.
Bottas, now 41 points adrift of his team-mate, was sidelined on Friday morning, after Mercedes identified a problem with his engine.
Mercedes were forced to change Bottas' power unit, leaving the Finn without a time to his name.
Kevin Magnussen finished fifth for Haas ahead of Ferrari driver Charles Leclerc in sixth.
British rookie Lando Norris ended the opening running in eighth, 1.3 seconds off the pace. George Russell finished ahead of Racing Point's Lance Stroll and Robert Kubica in the sister Williams to finish 17th.