The Red Bull driver boldly passed pole-sitter Sebastian Vettel into Turn 1 at the start, escaping contact with the Ferrari driver to continue and dominate the race at Mexico City.
Mercedes driver Valtteri Bottas finished 19.6 seconds adrift in second, with Ferrari's Kimi Raikkonen completing the podium, as Vettel and Hamilton finished fourth and ninth respectively.
Though Vettel cut Hamilton's championship lead to 56 points, there are only 50 remaining in the final two races, meaning Hamilton wins his third title in four years.
Hamilton, starting third, almost went three abreast with Vettel and Verstappen into Turn 1, but backed out of it before launching an attack around the outside at Turn 2 as his two rivals squabbled.
But Vettel, who needed to finish at least second to keep the championship alive and hope other results go his way, clipped Hamilton's right-rear tyre, causing a puncture for the Mercedes and also further damaging his front wing.
Both drivers pitted, with Vettel taking a new front wing and swapping ultrasofts for softs and Hamilton following the same tyre strategy. They rejoined in 19th and 20th.
Up front, Esteban Ocon ran a strong third, ahead of Nico Hulkenberg, Sergio Perez, Kimi Raikkonen and Lance Stroll.
While Hamilton struggled to close back up to the pack, Vettel made quick progress through the field, climbing up to seventh before the race was neutralised by the virtual safety car when Brendon Hartley retired with an engine problem.
Race leader Verstappen took the opportunity to pit from the lead, with Bottas and Raikkonen, who had climbed up to third following early stops from Ocon and Perez and Hulkenberg's retirement with an engine issue.
The trio rejoined in the same positions, with Vettel and Hamilton also pitting for fresh rubber and taking ultrasofts and supersofts respectively with a little over half of the race to go.
The title rivals restarted their recovery drives, with Vettel passing Kevin Magnussen to take seventh, while Hamilton passed Romain Grosjean, Pascal Wehrlein, Pierre Gasly and Marcus Ericsson to run 12th.
Vettel lunged down the inside of Perez to take sixth at Turn 4 and made short work of Stroll into Turn 1 to snatch fifth, before setting off in pursuit of Ocon.
The Ferrari driver caught the Force India quickly and used DRS to blast past Ocon into Turn 1 to take fourth, with teammate Raikkonen a further 24 seconds up the road with 14 laps to go.
When he heard the size of the gap, Vettel replied "Mama mia, that's a little bit too much" and he ultimately crossed the line fourth.
Hamilton had made good progress. He passed Vandoorne with ease and then swept around the outside of Felipe Massa into Turn 1 to move into the points in 10th and then came out on top in a brilliant tussle with Fernando Alonso to take ninth.
The Briton joins Vettel and Alain Prost on four world titles, with only Michael Schumacher and Juan Manuel Fangio ahead on the all-time list with seven and five respectively.
Ocon equalled his best-ever F1 result with fifth, ahead of Stroll, Perez and Magnussen.
Ricciardo recovered from starting 16th - following grid penalties for engine component changes, to run seventh early on, but his race lasted just five laps as he suffered yet more problems with his Renault engine.
Marcus Ericsson spent much of the early part of the race just inside the points, but retired in the closing stages after reporting a brake-by-wire failure and retiring the car.
Renault suffered a double retirement, with Carlos Sainz retiring late on after reporting his car was pulling on the straights.
27-29 Oct 2017 Autódromo Hermanos Rodríguez, Mexico City
|1||33||Max Verstappen||RED BULL RACING TAG HEUER||71||1:36:26.552||25|
|5||31||Esteban Ocon||FORCE INDIA MERCEDES||70||+1 lap||10|
|6||18||Lance Stroll||WILLIAMS MERCEDES||70||+1 lap||8|
|7||11||Sergio Perez||FORCE INDIA MERCEDES||70||+1 lap||6|
|8||20||Kevin Magnussen||HAAS FERRARI||70||+1 lap||4|
|9||44||Lewis Hamilton||MERCEDES||70||+1 lap||2|
|10||14||Fernando Alonso||MCLAREN HONDA||70||+1 lap||1|
|11||19||Felipe Massa||WILLIAMS MERCEDES||70||+1 lap||0|
|12||2||Stoffel Vandoorne||MCLAREN HONDA||70||+1 lap||0|
|13||10||Pierre Gasly||TORO ROSSO||70||+1 lap||0|
|14||94||Pascal Wehrlein||SAUBER FERRARI||69||+2 laps||0|
|15||8||Romain Grosjean||HAAS FERRARI||69||+2 laps||0|
|NC||9||Marcus Ericsson||SAUBER FERRARI||55||DNF||0|
|NC||28||Brendon Hartley||TORO ROSSO||30||DNF||0|
|NC||3||Daniel Ricciardo||RED BULL RACING TAG HEUER||5||DNF||0|
|4||Daniel Ricciardo||AUS||RED BULL RACING TAG HEUER||192|
|6||Max Verstappen||NED||RED BULL RACING TAG HEUER||148|
|7||Sergio Perez||MEX||FORCE INDIA MERCEDES||92|
|8||Esteban Ocon||FRA||FORCE INDIA MERCEDES||83|
|10||Lance Stroll||CAN||WILLIAMS MERCEDES||40|
|11||Felipe Massa||BRA||WILLIAMS MERCEDES||36|
|13||Romain Grosjean||FRA||HAAS FERRARI||28|
|14||Kevin Magnussen||DEN||HAAS FERRARI||19|
|15||Stoffel Vandoorne||BEL||MCLAREN HONDA||13|
|16||Fernando Alonso||ESP||MCLAREN HONDA||11|
|18||Pascal Wehrlein||GER||SAUBER FERRARI||5|
|19||Daniil Kvyat||RUS||TORO ROSSO||5|
|20||Marcus Ericsson||SWE||SAUBER FERRARI||0|
|21||Antonio Giovinazzi||ITA||SAUBER FERRARI||0|
|22||Pierre Gasly||FRA||TORO ROSSO||0|
|23||Brendon Hartley||NZL||TORO ROSSO||0|
|3||RED BULL RACING TAG HEUER||340|
|4||FORCE INDIA MERCEDES||175|