Mark Noble stepped off the bench for an injury time penalty – and saw it saved – as Jesse Lingard’s stunning late goal secured victory for Manchester United against his former club West Ham.
Lingard, who spent a successful loan spell at London Stadium last season, appeared as a substitute in the second half and with two minutes remaining he cut on to his right foot and fired into the top corner.
Further drama followed as Luke Shaw was adjudged to have handballed in the box and De Gea dived the right way to push away the spot-kick that had been taken by Noble, who was making his first touch after coming off the bench in the 95th minute.
Earlier in the contest, Cristiano Ronaldo had converted his fourth goal in three games since re-signing for Manchester United, poking home from close range on 35 minutes after Lukasz Fabianski had spilled the initial effort.
West Ham had taken the lead five minutes before that when Said Benrahma’s strike from outside the area went in after taking a huge deflection off defender Raphael Varane.
Bruno Fernandes had seen a first-time strike superbly tipped on to the post by Fabianski, who made a string of saves for the home side.
Victory ensures Ole Gunnar Solskjaer’s side remain unbeaten in the league this term with four wins and a draw, while West Ham suffered their first loss of the campaign.
Man Utd preserve unbeaten run on the road
The Red Devils were heavily criticised after a poor Champions League performance in Switzerland against Young Boys in midweek and were looking like being left frustrated in London.
But instead they maintained their incredible run away from home in the league and are now unbeaten in their last 29 top-flight games outside Old Trafford.
The game was meandering towards a draw until Lingard popped up to score superbly and the England international did not celebrate after being given a good reception by the home supporters.
The return of Ronaldo seems to be an inspired move by Solskjaer as the Portugal international continued his impressive return and he could have had more goals, as well as having a number of penalty appeals turned down.
Ronaldo flashed a shot straight at Fabianski and another effort was brilliantly tipped wide by the Polish goalkeeper, who also kept out efforts from Luke Shaw and Aaron Wan-Bissaka.
West Ham forwards Nikola Vlasic and Pablo Fornals both flicked efforts wide from promising positions and they had a golden opportunity to claim a point in the dying seconds.
Andriy Yarmolenko’s cross hit Shaw’s outstretched arm and referee Martin Atkinson awarded the penalty after viewing the incident on the pitchside monitor.
Declan Rice initially took the ball but Noble came on for Jarrod Bowen and assumed responsibility, but his effort was brilliantly saved by De Gea.
West Ham United
- 11VlasicSubstituted forYarmolenkoat 68′minutes
- 20BowenSubstituted forNobleat 90+4′minutes
- 22BenrahmaSubstituted forLanziniat 88′minutes
- 1de Gea
- 17FredSubstituted forMaticat 88′minutes
- 11GreenwoodSubstituted forSanchoat 73′minutes
- 18Bruno Fernandes
- 6PogbaSubstituted forLingardat 73′minutes
- 7Cristiano Ronaldo
- 34van de Beek
- Martin Atkinson
Match ends, West Ham United 1, Manchester United 2.
Second Half ends, West Ham United 1, Manchester United 2.
Penalty saved! Mark Noble (West Ham United) fails to capitalise on this great opportunity, right footed shot saved in the bottom right corner.
Substitution, West Ham United. Mark Noble replaces Jarrod Bowen.
VAR Decision: Penalty West Ham United.
Penalty conceded by Luke Shaw (Manchester United) with a hand ball in the penalty area.
Foul by Luke Shaw (Manchester United).
Jarrod Bowen (West Ham United) wins a free kick in the attacking half.
Goal! West Ham United 1, Manchester United 2. Jesse Lingard (Manchester United) right footed shot from the left side of the box to the top right corner. Assisted by Nemanja Matic.
Substitution, West Ham United. Manuel Lanzini replaces Saïd Benrahma.
Substitution, Manchester United. Nemanja Matic replaces Fred.
Attempt missed. Pablo Fornals (West Ham United) right footed shot from outside the box misses to the left following a corner.
Corner, West Ham United. Conceded by David de Gea.
Attempt saved. Bruno Fernandes (Manchester United) right footed shot from outside the box is saved in the centre of the goal. Assisted by Jesse Lingard.
Substitution, Manchester United. Jesse Lingard replaces Paul Pogba.
Substitution, Manchester United. Jadon Sancho replaces Mason Greenwood.
Raphaël Varane (Manchester United) wins a free kick in the defensive half.
Foul by Jarrod Bowen (West Ham United).
Attempt blocked. Saïd Benrahma (West Ham United) right footed shot from outside the box is blocked. Assisted by Andriy Yarmolenko.
Hand ball by Luke Shaw (Manchester United).
- Our coverage of your Premier League club is bigger and better than ever before – here’s everything you need to know to make sure you never miss a moment