A fine strike from Said Benrahma gave the Hammers a shock lead in the 54th minute.
West Ham held that lead until the 77th minute when a Nayef Aguerd own goal leveled the game.
It looked like extra time was looming at Old Trafford before Alejandro Garnacho fired the home side ahead with 24 seconds of normal time remaining.
Garnacho controlled a high ball inside the West Ham penalty area before curling a low shot past Alphonse Areola.
This was Garnacho’s fourth senior goal for United and his first ever at Old Trafford.
Fred then added to the scoreline by making it 3-1 in stoppage time.
David De Gea – 6.5/10
Huge save in the first half to deny Antonio after Lindelof and Maguire were both caught sleeping. Could do nothing for the goal as Benrhama rifled the ball into the top corner. A solid night for United’s no.1 which highlighted both his strengths and his flaws.
Diogo Dalot – 5/10
Perhaps should have done better when Garnacho’s attempt rebounded to him with the goal at his mercy. Loose in possession and was beaten a couple of times one against one far too easily. Dalot has struggled for form since the World Cup and not many would argue that Wan-Bissaka deserves to start ahead of him currently. Not his best night.
Harry Maguire – 5/10
A rare start for the captain. His first real action of the game was a trademark half-way line lunge on Antonio which saw the United defender receive a booking for his troubles. Moments earlier, the West Ham forward got in behind the United defense for West Ham’s best chance of the half. His weaknesses were evident against one of the lowest-scoring teams in the league and this performance hasn’t given his manager any doubts over who his starting defenders are.
Victor Lindelof – 5/10
Switched off to allow Antonio to get in behind in the first half. Was neat and tidy with the majority he had to deal with defensively but this game made it glaringly obvious – if it wasn’t already – that Lindelof and Maguire can’t be on the pitch at the same time. Substituted for Lisandro Martinez with just over half an hour left.
Tyrrell Malacia – 5/10
A high energy performance from the Dutch full-back but it was all bark and no bite, summed up when he won the ball brilliantly high up the pitch but played a short ball to Weghorst when better options were available.
Marcel Sabitzer – 6/10
Tested Areola with a fine strike early in the game. Drifted further forward than his previous outings for United but still broke up the play well when required. One of United’s better performers on the night but faded away in the second half. Substituted for Fred with five minutes of normal time remaining.
Scott McTominay – 4.5/10
Struggled to impact the game and was careless in possession. Booked for a clumsy foul. Subbed at half-time for Casemiro.
Bruno Fernandes – 5/10
A mixed game for United’s talisman. His corner forced the own goal from Aguerd but he struggled to create from open play and was wasteful in possession. Not a performance he’ll look back on with great pride but he played his part in the comeback.
Antony – 5/10
A quiet night for Antony. A few flashes of what he’s capable of but little end product. Substituted for Marcus Rashford just before the hour mark.
Wout Weghorst – 7/10
Excellent link-up, particularly in the first half. Good ball to release Garnacho and a nice layoff to set up a chance for Sabitzer in the opening ten minutes. For all the good Weghorst did off the ball and in deeper areas, his weakness was highlighted again after spurning a good opening early in the second half. His hard work continued into the final seconds as his pressure led to the mistake for Fred’s goal in the 94th minute.
Much is made of his pace and lack of threat in front of goal but Weghorst is quickly becoming a fan favorite for his personality and work off the ball.
Alejandro Garnacho – 8/10
Lively performance but his decision-making was left wanting for the majority of the night – which is understandable given the stage of his career. Forced a good save from the West Ham goalkeeper early in the first half after chopping inside on his right foot which triggered chants of ‘Viva Garnacho’ from the Stretford End.
Caesmiro – 6.5/10
Casemiro’s presence was sorely missed in the first half. Created a good chance for Weghorst early in the second half but the Dutch forward took a poor first touch. Beaten too easily by Soucek in the build-up to Benrhama’s goal and unfortunately had a goal of his own ruled out after straying slightly offside.
Brought noticeable quality to United’s midfield which was severely lacking in the first 45.
Marcus Rashford – 5/10
Subbed on with half an hour to play. Tried to force the issue a little too much and didn’t manage to impact the game. Went close in the final stages after Garnacho put United ahead.
Lisandro Martinez – 5/10
Didn’t have much to do defensively with West Ham firmly under the cosh after his arrival. Unlucky to see his acrobatic effort blocked by his own player with The Reds chasing a winner.
Fred – 6.5/10
A late goal topped off a nice cameo from the Brazilian.