A remarkable piece of late ingenuity from Arthur Masuaku was enough to see West Ham topple table-topping Chelsea at the London Stadium.

Thiago Silva headed the visitors into a 28th-minute lead before Manuel Lanzini equalised from the spot after 40 minutes. 

A stunning Mason Mount volley restored Chelsea's advantage on the stroke of half-time, only for – the man of the match – to level the scores against just before the hour.   

With the game heading for a draw, Masuaku caught Edouard Mendy napping at his near-post and his ridiculous cross-come-shot flew into the net for an unexpected 87th-minute winner. It was incredible audacity that was matched by some equally questionable goalkeeping.

Story of the match

David Moyes shifted into a back-three system to match the Blues, bringing Issa Diop in for the injured Aaron Cresswell – with Ben Johnson slotting in as an auxiliary left-wing-back and Vladimir Coufal operating on the other side.  Lanzini also came in for Pablo Fornals. 

Thomas Tuchel made a four changes from his team's narrow victory against Watford. In came Reece James, Silva, Jorginho and Hakim Ziyech; Cesar Azpilicueta, Saul Niguez and Christian Pulisic dropped to the bench while Trevor Chalobah missed out entirely with injury. 

Chelsea dominated possession in the early stages but West Ham were happy to sit in and hit on the counter-attack. 

That burst on the break was in evidence in the opening minutes after Silva's careless pass released Bowen; the attacker was quickly closed down by Andreas Christensen and his rushed effort whistled wide of the near post. 

At the other end, Lukasz Fabianski got down well to smother a snap-shot from Reece James and the wing-back almost picked out Havertz shortly after with a tempting ball across the box.  

It took twenty minutes before Mendy was called into some routine action: falling low to his left to gather a tame effort from Craig Dawson after Chelsea failed to clear a West Ham corner. 

The hosts had looked compact but, after 25 minutes, they inexplicably allowed Havertz a free header in the centre of goal. However, it was a tame effort from the Chelsea forward and Fabianski easily collected. 

It was big let-off for Moyes' men but they failed to learn any lessons because, just a few minutes later, Chelsea took the lead from a very similar situation.

Silva was left unmarked from Mount's corner and the Brazilian powered a header into the ground and away from the diving Fabianski. 

Thiago Silva rose the highest to put Chelsea ahead: Alex Pantling/GettyImages

The Hammers would have been kicking themselves but they nearly found an instant response through Coufal.

The defender reacted quickly to a loose-ball after Chelsea failed to clear their lines, smashing a half-volley across Mendy and seemingly into the corner. Remarkably, the goal-scorer Silva was alive to the situation and he managed to make a last-ditch block. 

West Ham didn't let up and they soon forced themselves back into the game, but they owe a lot of their equaliser to the antics of the Chelsea goalkeeper. 

Mendy took too long to clear his lines and Bowen was onto him in a flash, causing the stopper to inexplicably bring down the attacker down as he tried to engineer a sliding clearance. Penalty to the Hammers!

It was sloppy spot-kick to give away but there was nothing sloppy about Lanzini's technique: smashing the ball high into the top left-corner with Mendy going the wrong way.

Manuel Lanzini sends Edouard Mendy the wrong way from the spot: Julian Finney/GettyImages

The home faithful were buoyant and the teams looked to be heading into the break with the scores level but they were hit with a 44th-minute sucker-punch from Mount. 

The boyhood Chelsea hero latched onto a diagonal from Ziyech before striking a wonderfully controlled volley past Fabianski at his near post. Sloppy defending again from West Ham, and the goalkeeper will have been disappointed, but it was tremendous technique from Mount. 

Johnson hobbled off just before the interval, with Masuaku coming on in his place, and Havertz also departed from Romelu Lukaku after a collision with Kurt Zouma

The second-half started with the visitors on the front foot but the lively Bowen wasn't a fan of that script. 

With 56 minutes on the clock, Coufal picked out Bowen on the edge of the box with a little tee-up and the former Hull City man found the corner with a venomous low strike from 20-yards.

The goal prompted Tuchel into a second change, throwing Callum Hudson-Odoi on for Ziyech in the hope of injecting some more pace and trickery into the Chelsea attack. 

And Hudson-Odoi nearly made an instant impact – sliding the ball through to Mount in the box but Mount's shot was too close to the goalkeeper. 

Chelsea were piling on the pressure and Moyes decided to alter his team's shape in the 71st minute, bringing Pablo Fornals on for Kurt Zouma and switching to a back-four.

At the same time, Tuchel swapped Marcos Alonso for Christian Pulisic to equal that added push for attacking emphasis. 

And West Ham immediately targeted that side and went agonisingly close to taking the lead just a few minutes after those tactical changes.

Michail Antonio had been relatively well contained but the livewire powered into the space behind Antonio Rudiger and Hudson-Odoi before drilling the ball across he six-yard box. Bowen was lurking but he couldn't direct his stretched effort on-target. 

The match looked like it would end with the points shared but then Masuaku took the game by the scruff of the neck with his looping 25-yard effort from the side of the pitch. The London Stadium erupted!

The challengers for Europe came out on top against the champions of Europe. What a game of football!