Leclerc finished sixth and now trails Verstappen by 80 points heading into the sport's summer break.
After overcoming 30 laps of pole man Russell's resistance to take the lead with a brilliant move around the outside of the Mercedes at Turn 1, Leclerc looked on course to take the chequered flag.
But the Monegasque's afternoon was wrecked - and his championship hopes dealt an almost irreversible blow - when Ferrari elected to put their star driver on the hardest rubber.
From being the fastest man on track, Leclerc suddenly had no speed, and he was gobbled up by Verstappen, who started 10th, at the start of lap 40.
Verstappen spun at the penultimate corner on the same lap to allow Leclerc back into the lead.
But such was his lack of pace on a strategy dismissed by tyre supplier Pirelli, Verstappen was back past the Ferrari, racing past his beleaguered rival at the second corner five laps later.
From there, Verstappen's eighth win of his championship defence never appeared in danger with a second title in as many years looking increasingly likely.
The opening half of Sunday's race was led by Russell after he raced away from his marks 24 hours after claiming the first pole of his career.
Carlos Sainz, who started second, nibbled at Russell's Mercedes gearbox through the opening corner, but Russell displayed great composure to keep the Ferrari man at bay, and he pulled 2.4 seconds clear after just three laps.
Sainz and Leclerc started to claw Russell back in but after the first round of stops, Russell's lead remained at two seconds.
By now, Leclerc was past Sainz and the fastest man in Hungary. A look of resignation appeared on Mercedes boss Toto Wolff's face, and despite Russell's stoic resistance, Leclerc got his man on lap 30.
Despite the threat of rain, that appeared to be that for Leclerc, only for Ferrari to make a bizarre strategy call.
Leclerc crashed out while leading last weekend's French Grand Prix, but here his team were to blame, with their star man having to stop for tyres one more time than his rivals.
He is now the equivalent of three wins behind with Verstappen with nine rounds to come after the sport's month shutdown.
Hamilton started seventh but moved up to fifth after passing both Esteban Ocon and Fernando Alonso at the start.
For large periods of the race, Hamilton was out of contention, but, after adopting a different strategy to those around him, the race came towards the British driver in the closing stages.
With 19 laps remaining, Hamilton was in the lead when he stopped for the softest rubber.
He left the pits in fifth, but passed Sainz with seven laps left and then moved ahead of team-mate Russell with five to run, finishing the race with the fastest lap.
Sainz crossed the line in fourth, one place ahead of Verstappen's Red Bull team-mate Sergio Perez.