Anthony Martial salvaged a replay for Man United after Dimitri Payet had given the Hammers the lead with a sensational free kick.
Payet’s effort from at least 30 yards out, grazing the post and giving David de Gea no chance, looked to have sent West Ham through to Wembley but Martial was on hand to at least prevent a third successive defeat, even with a hint of a foul by Bastian Schweinsteiger on goalkeeper Darren Randolph.
The Hammers stopper was scrambling across the line to try and get to the back post following Ander Herrera’s lovely floated cross, but ran into Schweinsteiger and ended up in the back of the net as Martial slid the ball home.
The Hammers certainly started the brighter with Andy Carroll, Emanuel Emenike and Payet all failing to hit the target with decent chances, before Emenike headed straight at the keeper after good work from Aaron Cresswell.
United grew into the contest the longer the half wore on with Herrera wasting two good chances inside the box before Marcus Rashford saw a shot deflected over.
The home side began the second half very well with two penalty shouts for handball before Randolph denied Rashford from close range.
Payet had a penalty appeal of his own after a challenge from Marcos Rojo but made up for the disappointment of not being given it, with his superb free kick just moments later in the 68th minute.
United turned up the pressure but were largely kept at arm’s length until Martial started and finished the move that got them level in the 83rd minute.
Chances were few and far between in the closing minutes but Michail Antonio brought an excellent finger-tip save from De Gea with a low driven shot late on, and now both teams will go again at Upton Park in a replay.