The Avalanche Andretti driver atoned for his qualifying error that cost him pole by pouncing on a mistake from polesitter Lucas di Grassi to pick up the lead, and overcame a hit to his lead from a mid-race safety car to waltz into an unassailable lead.
Dennis overcame a slight challenge from Jake Hughes to retain second off the line, but could not challenge di Grassi in the opening stages following an early safety car.
Robin Frijns' crash into the back of Norman Nato at the Turn 10 chicane produced an early safety car to put a pin in the early proceedings. The Dutchman will need to go an operation having broken his left wrist in the crash.
Although Dennis restarted his charge when the race resumed on lap 6, it was only fleeting as Sam Bird came to a stop on the exit of Turn 1 with a broken driveshaft and required a recovery vehicle to collect his stranded Jaguar.
After the second restart on lap 10, Dennis began to put pressure on the Mahindra ahead, and two laps later reaped the benefits as di Grassi made a mistake in the first corner to allow the Nuneaton native to move ahead into the lead.
Pressing on with his race, Dennis was able to build a break over di Grassi which had grown to 3.6s by lap 18, but his efforts melted away when a third safety car was produced; Edoardo Mortara lost the rear at the Turn 1 apex and went backwards into the wall.
A quick clean-up operation meant that green flag running could continue on lap 21, but di Grassi's greater energy consumption meant that he could not pose a threat to Dennis, who carried on driving into the sunset.
The Porsche-powered Andretti showed great energy management and gave the Briton the ammunition to build his lead up to four seconds over di Grassi, before the Brazilian was passed by Wehrlein on lap 29 as the German dived past at Turn 9.
But Wehrlein was unable to close in on Dennis, who continued to disappear into the distance. Even with five added laps for the cocktail of safety cars pervading the race, Dennis crossed the line after 41 laps with almost eight seconds in hand to draw first blood in the 2022-23 title race.
Wehrlein similarly escaped di Grassi's clutches and was 10s ahead at the flag, as the 2016-17 champion had to contend with a train of cars forming behind him as the Mahindra package was perhaps compromised in race pace.
But di Grassi's defensive moves were excellent; he held off a number of moves from McLaren rookie Hughes as the Birmingham-born driver sought after a podium in his maiden Formula E race, and earned the Paulista another trip to the Mexico City podium.
Hughes' inability to forge a path past di Grassi ultimately cost him a position, as Andre Lotterer snatched fourth away from him on the final lap of the race heading into the Foro Sol stadium section.
Lotterer had been fending off Sebastien Buemi and Antonio Felix da Costa behind him, as the two were drawn into the battle owing to di Grassi's slow pace in the latter stages of the race.
Mitch Evans claimed eighth after a slow-burner of a race, in which he prioritised taking his attack mode activations late on to make progress, and finished ahead of fellow Kiwi Nick Cassidy.
Cassidy had been in a fight with the DS Penske pair of Stoffel Vandoorne and Jean-Eric Vergne, but the latter duo struggled with energy at the close of the race and ceded positions - Vandoorne finishing the race in 10th, as Vergne slipped behind Maximilian Guenther.
Dan Ticktum, who had qualified in a stellar fifth place on the grid, endured multiple misfortunes and had to serve a drive-through penalty for a spike in overpower, before a corner cut cost him a 10-second penalty.
A subsequent corner-cut to gain an advantage awarded Ticktum another drive-through, and he is under investigation from a safety car infringement - as is Sacha Fenestraz.
Results: Formula E Mexico City E-Prix
|1||Jake Dennis||Andretti Autosport||41|
|2||Pascal Wehrlein||Porsche Team||41||7.816|
|3||Lucas di Grassi||Mahindra Racing||41||18.611|
|4||Andre Lotterer||Andretti Autosport||41||19.161|
|5||Jake Hughes||NEOM McLaren Formula E Team||41||20.289|
|6||Sébastien Buemi||Envision Racing||41||20.714|
|7||Antonio Felix da Costa||Porsche Team||41||21.051|
|8||Mitch Evans||Jaguar Racing||41||24.758|
|9||Nick Cassidy||Envision Racing||41||29.150|
|10||Stoffel Vandoorne||DS Penske||41||29.662|
|11||Maximilian Gunther||Maserati MSG Racing||41||30.276|
|12||Jean-Eric Vergne||DS Penske||41||31.141|
|13||Oliver Rowland||Mahindra Racing||41||31.537|
|14||Nico Müller||ABT CUPRA Formula E Team||41||31.951|
|15||Sacha Fenestraz||Nissan Formula E Team||41||32.355|
|16||Sergio Sette Camara||NIO 333 Racing||41||35.205|
|17||Dan Ticktum||NIO 333 Racing||41||1'14.372|
|René Rast||NEOM McLaren Formula E Team||37||4 Laps|
|Edoardo Mortara||Maserati MSG Racing||17||24 Laps|
|Sam Bird||Jaguar Racing||5||36 Laps|
|Norman Nato||Nissan Formula E Team||2||39 Laps|
|Robin Frijns||ABT CUPRA Formula E Team||0|
|View full results|