Eintracht Frankfurt seized control of their Europa League semi-final against West Ham as Japan midfielder Daichi Kamada inspired a 2-1 win in the first leg on Thursday.
Oliver Glasner’s side arrived at the London Stadium as underdogs against a West Ham team enjoying their best season for years.
But Ansgar Knauff gave Frankfurt the perfect start with a goal after just 49 seconds.
Michail Antonio equalised with his first goal in 11 matches, but Kamada bagged the winner with a close-range finish in the second half.
Frankfurt have struggled at times in the Bundesliga this season, saving their best performances for Europe.
They had already stunned Barcelona in the quarter-finals and this was another memorable performance, putting them in pole position to reach the final against RB Leipzig or Rangers.
Frankfurt, whose only major European title came in the 1980 UEFA Cup, can finish the job when they host the second leg on May 5.
Back in 1976, West Ham defeated Frankfurt 4-3 on aggregate in the European Cup Winners’ Cup semi-finals.
Hoping to reach their first major European final since then, West Ham will have to stage an impressive escape act in Frankfurt to emulate that success.
In their first semi-final since the 2014 League Cup, West Ham welcomed back Kurt Zouma from an ankle problem after Moyes had feared he would have only one fit centre-back due to injuries.
Despite Zouma’s presence, West Ham’s defence was breached after less than a minute.
Rafael Borre was given far too much time and space on the edge of the area and he ruthlessly exploited West Ham’s hesitancy.
Borre’s pin-point cross arrowed toward the far post, where Knauff got behind the dozing Pablo Fornals and thumped a powerful header past Alphonse Areola from close range.
It was the fastest ever goal scored in a Europa League semi-final and West Ham understandably looked shell-shocked.
Moyes gestured to his players to calm down as passes went astray in their anxiety to get back into the tie.
Jarrod Bowen should have eased West Ham’s nerves when he surged onto Fornals’ defence-splitting pass, but the winger was left holding his head in frustration after his low strike hit the post.
Undeterred by their nightmare start, West Ham began to turn the screw and Antonio ensured their pressure pay off with the 21st-minute equaliser.
Zouma rose highest to head Manuel Lanzini’s free-kick back across goal and Antonio pounced with a stretching volley from virtually on the line.
Frankfurt wasted a golden opportunity to retake the lead just before half-time when Knauff raced onto Borre’s through ball, only to see his initial effort blocked before he skied the follow-up over the bar.
It was a warning West Ham failed to heed and the Germans struck with a superbly crafted move 10 minutes into the second half.
A swift exchange of passes cut through the West Ham defence and, although Djibril Sow’s shot was saved by Areola, Kamada was on hand to tap the rebound into the empty net despite the hosts’ appeals for offside.
Moyes sent on Said Benrahma in a bid to spark his side and the Algerian was close to equalising with a long-range curler that clipped the woodwork.
Chopped down by Declan Rice moments earlier, Kamada almost exacted instant revenge, scampering clear for a shot that hit the far post.
In stoppage time, West Ham struck the woodwork for the third time as Bowen’s bicycle kick smashed down off the bar.