The 24-year-old Dutchman drove with flawless control in the searing heat to guide his Red Bull home 10.587 seconds ahead of Mercedes' Hamilton, in his 300th race, with George Russell, in the second Mercedes, beating Sergio Perez in the other Red Bull, for third.
It was Verstappen's seventh win this season and the 27th of his career and a blow to Leclerc's challenge in the opening race of the second half of the season.
After 12 of the 22 races, Verstappen leads Leclerc by 63 points in the drivers' standings.
"We had good pace, but it was hard to follow here with the tyres overheating so we stayed calm," said Verstappen.
"You never know how it is going to go... It was unlucky for Charles and I'm glad he is ok."
Perez finished fourth ahead of a rampant Carlos Sainz, who drove from the back of the grid to finish fifth for Ferrari ahead of Fernando Alonso of Alpine and McLaren's Lando Norris.
Esteban Ocon was eighth in the second Alpine ahead of Daniel Ricciardo of McLaren and Lance Stroll of Aston Martin.
Hamilton was delighted to be second.
"It was a tough race as my drinks bottle didn't work so it was a great result for us, especially considering we're so far off the pace," he said. "Great reliability from the team and George did an amazing job."
On an afternoon of searing heat, with a track temperature of 52 degrees and the air 34 at the start, Leclerc made a clean start to lead into the first corner ahead of Verstappen, with Hamilton leaping clear of Perez into third.
Leclerc led by a second after the opening lap, which saw Yuki Tsunoda spin and recovers while Sainz, from the back of the grid, began his charge.
Verstappen's superior straight-line speed powered him close behind Leclerc's Ferrari at the end of the Mistral Straight, but the leader held firm, his car squirming for grip in the heat.
Having resisted Verstappen's early attacks, Leclerc held a lead of nine-tenths by lap 13.
Sainz, praised for his progress by Ferrari, reached 10th on lap 14.
At the front Leclerc increased his pace to draw 1.7 seconds clear by lap 15, when the track temperature was recorded at 55 degrees.
"We are planning Plan B," Ferrari told Leclerc, refocusing on tyre wear and strategy.
Verstappen came in on lap 17 for a stop in 2.4 seconds, rejoining seventh. As he came back, Ferrari warned Leclerc his tyres were overheating, but he held a 10-second lead ahead of Hamilton with Perez third, three seconds adrift.