West Ham fell to a frustrating 2-1 defeat against Eintracht Frankfurt on Thursday night, leaving themselves with a mountain to climb in the second leg of their Europa League semi-final tie next week.
The Hammers gave themselves hope in the first period as Michail Antonio cancelled out Ansgar Knauff's first-minute opener, only for Daichi Kamada to notch a pivotal second-half winner and send Frankfurt home with a huge result.
The game got off to the worst possible start for the hosts, as Frankfurt shocked the London Stadium into a deafening silence. Taking advantage of some space on the left in the opening 50 seconds, Kamada and Rafael Borre combined, before the latter delivered a superb cross to the back post, where Knauff headed beyond a rooted Alphonse Areola.
The Hammers did well to pick themselves up and regain composure, and really ought to have been on level terms inside a quarter of an hour. However, Jarrod Bowen could only hit the upright when one on one with Kevin Trapp courtesy of a slide-rule pass from Antonio.
David Moyes' side kept plugging away and eventually managed to find something tangible in the 21st minute, when a set-piece situation yielded a just reward for their pressure. Heading the ball back across the six-yard box from Manuel Lanzini's free kick, Kurt Zouma found a massively grateful Antonio who tapped the ball into an empty net at the far stick.
Having returned to full volume, the London Stadium atmosphere was shut back down as Frankfurt capitalised on a strong start to the second period to restore their lead ten minutes after the restart.
The goal came from a stunning collective move, with Djibril Sow eventually being put through by a lovely defence-splitting pass from Jesper Lindstrom, only for the Swiss to be denied by a sensational stop from Areola. The rebound, however, fell perfectly for Kamada to simply slot into an empty West Ham goal.
The palpable anxiety around the ground began to be alleviated once the Hammers recovered from a rocky spell, and very nearly scored a second of their own after substitute Said Benrahma caught the outside of the post with a sensational dipping effort from around 25 yards out.
Frankfurt's ability to counter became very clear, though, as Oliver Glasner's men hit the upright themselves with just over ten minutes remaining. Were it not for the slightest touch off Craig Dawson's calf, Kamada would have been wheeling away in celebration of a lovely curling effort nestling into Areola's bottom corner.
There was time for one more moment of unbelievable drama as Bowen was denied once again, this time coming close with an outrageous effort, connecting perfectly with Declan Rice's cross and thumping an unbelievable overhead kick onto the crossbar.
Were it not for the smallest of margins, Moyes' men might have found themselves level at the halfway point in the tie. But it will instead be Frankfurt who hold the upper hand with the second leg set to take place at their home ground next week.
Here's how the players rated from an enthralling European night...
1. West Ham (4-2-3-1)
GK: Alphonse Areola - 5/10 - Not much chance with the early goal and desperately unlucky with the second; definitely didn't deserve to concede twice.
RB: Ben Johnson - 6/10 - Pretty disappointing on the front foot but coped well with Filip Kostic defensively.
CB: Craig Dawson - 6/10 - Refreshingly simple and effective yet again, notably crucially deflecting Kamada's late effort onto the post.
CB: Kurt Zouma - 6/10 - Towering header to assist his side's equaliser, while putting in a decent defensive display at the heart of the backline.
LB: Aaron Cresswell - 6/10 - Solid at the back, notably doing fantastically to thwart Knauff and deny Frankfurt a certain second with a last-ditch tackle just before the break.
CM: Tomas Soucek - 5/10 - A strong aerial presence once again, although not exactly threatening on the ball despite getting into some good areas in the second period.
CM: Declan Rice - 7/10 - An absolute general. Injected drive into the hosts' play whenever on the ball and read play well to break things up on the back foot.
AM: Manuel Lanzini - 6/10 - Lovely delivery to create the chance for the first-half equaliser and bustled around the field with great tenacity throughout.
RW: Jarrod Bowen - 7/10 - Could only hit the upright when he really should have equalised early on, and almost rescued a draw with a ridiculous bicycle kick. Deserved a goal with a slippery, incisive and direct performance throughout.
ST: Michail Antonio - 8/10 - Some very good selfless work, pulling the opposition around as well as linking play to decent effect and got what he deserved as he pulled his side back on level terms in the first half.
LW: Pablo Fornals - 5/10 - Was poor as he allowed Knauff to bomb in at the back post for the opener and only occasionally looked likely to make something happen as he floated around in space.
SUB: Said Benrahma (66', for Lanzini) - 7/10 - A real threat after his introduction and almost scored the goal of the season as he flicked the outside of the post with a Dimitri Payet-esque dipper from range.
2. Eintracht Frankfurt (3-4-3)
GK: Kevin Trapp - 5/10 - Couldn't do anything about Antonio's equaliser, and might have conceded a couple more had it not been for small margins.
CB: Tuta - 5/10 - Generally the least comfortable of the visitors' back three, but didn't do anything disastrous.
CB: Martin Hinteregger - 6/10 - Commanding presence at the heart of defence for the most part, although should have done better to keep tabs on Zouma at the fatal free kick.
CB: Almamy Toure - 6/10 - Mostly alert to the multitude of balls hit down the flank for Hammers runners to sprint onto, defending well for the majority.
RWB: Ansgar Knauff - 8/10 - Such an explosive threat from the right flank, getting a very early reward for his brilliant attacking work. Looks a real talent.
CM: Djibril Sow - 7/10 - Covered a lot of ground, doing well to press hard and make areas very compact for the opposition's creative players. Started making some brilliant darts forward after the break and proved central to Frankfurt's second.
CM: Sebastian Rode - 7/10 - Patrolled midfield so well, keeping things calm and ticking along like the seasoned pro he is.
LWB: Filip Kostic - 5/10 - Showcased his glorious talent sparingly but very much played on the periphery compared to how impactful he usually is.
RF: Jesper Lindstrom - 6/10 - Had, on occasion, some nice touches on the ball - notably the pass to play Sow through in the build-up to his side's second. Withdrawn with injury after the hour-mark, which could force him out of next week's tie.
LF: Daichi Kamada - 7/10 - Often dropped into space and proved a bright creative spark for his side, deservedly notching the easiest - and perhaps biggest - goal of his career before almost securing a brace late on.
ST: Rafael Borre - 5/10 - Lovely ball in to assist Knauff after 50 seconds, and then disappeared for the remaining 89 minutes and ten seconds.
SUB: Jens Petter Hauge (62', for Lindstrom) - 5/10 - Cut a pretty distant figure for the last half an hour or so.
SUB: Ragnar Ache (93', for Borre) - N/A