Having taken pole position over Vandoorne earlier on Saturday, Dennis was able to hold the lead at the start and keep Vandoorne at bay throughout the entirely of the race - managing his pace and energy to ensure he crossed the line with a 2.2s advantage at the chequered flag.
Dennis cut across Vandoorne at the start of the race and held the lead into the first corner. He thus began to try and set the pace in a bid to control proceedings and match his race victory from last season.
The two took their opening attack modes together on the ninth lap, with the two activations of 250kW lasting a minute each, and thus remained glued together - matched for power.
But by the close of their attack modes, Dennis had two percent more energy than the chasing Vandoorne, having also used less energy than de Vries and Sette Camara in pursuit.
The Mercedes duo had targeted staying ahead of Sergio Sette Camara off the line, with the team expecting the Dragon Penske driver would start holding them up, and did so off the line.
But Sette Camara launched a move down the inside of Nyck de Vries the first corner on lap five, picking up third place from the reigning champion. The Brazilian was able to keep pace with Vandoorne ahead, but was once more displaced by de Vries as the Dutchman undercut him with his first attack mode on lap eight.
With Vandoorne arguably requiring a strategic advantage to get one over Dennis, he was asked to take attack mode on lap 17, which Dennis also covered off to preserve his lead into the second half of the race.
It was at this point where Dennis began to break-build, finding a 1.5s lead over Vandoorne - and still with more energy - to extend his advantage.
Vandoorne was able to cut the gap to Dennis in the final 15 minutes of the race to within a second, but remained a percent down on energy as the Avalanche Andretti driver continued to manage his pace out front - keeping the Belgian at arm's length as Vandoorne was told not to take any risks.
It proved enough for Dennis to, at the end of the race, extend his advantage over Vandoorne and claim his second ever London E-Prix win - having won the Saturday race at the ExCeL last year from second on the grid.
The Brit also bagged fastest lap, completing his Grand Slam.
Having largely settled for second, Vandoorne extended his points lead in the drivers' championship, as de Vries kept third despite a dramatic late-race battle with a charging Nick Cassidy.
Cassidy had timed his attack modes later than his rivals, allowing him to make up ground in the second half and catch up to de Vries after clearing the likes of Sette Camara, Maximilian Guenther and Oliver Askew.
With Cassidy all over de Vries, the Dutchman put in a stern defence to keep the Kiwi behind - seeing a passing attempt at Turn 21 coming and then slamming the door into Turns 1 and 2.
The Envision driver tried to outdrag de Vries to the line, but the Mercedes driver kept his head in front by 0.3s - and an investigation into de Vries' defending was waved away by the stewards.
Askew picked up fifth after Guenther began to run out of power, forcing the Nissan driver to drop back into eighth - behind Mitch Evans and Antonio Felix da Costa - late on into the race.
Sette Camara's misery was worse, having run out of useable energy after running in fourth for the majority of the race, and thus started to drop down the order through energy saving - before dropping out of the points at the end to deny him his first score of the year.
Lucas di Grassi doubled his points haul when Sette Camara fell out of the top 10, and Pascal Wehrlein recovered a point in a difficult race for the Porsche squad.
London E-Prix: Full race one result
|1||Jake Dennis||Andretti Autosport||29|
|3||Nyck de Vries||Mercedes||12.367||15|
|4||Nick Cassidy||Virgin Racing||12.663||12|
|5||Oliver Askew||Andretti Autosport||14.904||10|
|6||Mitch Evans||Jaguar Racing||17.128||8|
|7||Antonio Felix da Costa||Techeetah||17.733||6|
|9||Lucas di Grassi||Venturi||32.139||2|
|10||Pascal Wehrlein||Porsche Team||34.347||1|
|12||Andre Lotterer||Porsche Team||35.508|
|14||Alexander Sims||Mahindra Racing||40.345|
|15||Oliver Turvey||NIO Formula E Team||41.293|
|16||Robin Frijns||Virgin Racing||44.023|
|17||Dan Ticktum||NIO Formula E Team||51.947|
|Sergio Sette Camara||Dragon Racing||1'06.394|
|Antonio Giovinazzi||Dragon Racing||11 Laps|
|Oliver Rowland||Mahindra Racing||20 Laps|
|Sam Bird||Jaguar Racing|
|View full results|