West Ham United will face Eintracht Frankfurt for a place in the Europa League final after the Hammers secured their first European semi-final in 46 years with a stunning second-leg victory in Lyon.
Having held on for a 1-1 first-leg draw in London after playing the entire second half with 10 men, David Moyes' players withstood periods of intense early pressure before sweeping their Ligue 1 opposition aside.
The visitors struck twice in seven minutes at the end of the first half, as Craig Dawson met Pablo Fornals' corner with a superb near-post header before a deflected Declan Rice strike put the Premier League club in total charge.
Jarrod Bowen extended the advantage within three minutes of the restart, slotting in at the end of a sweeping counter-attack, and a deflated Lyon could offer no response as West Ham comfortably saw out a memorable win.
The statement victory set up the biggest match in the club's recent history, against Bundesliga side Frankfurt, who upset Spanish giants Barcelona 3-2 at the Nou Camp to win 4-3 on aggregate.
Brilliant West Ham leave Lyon stunned
Frankfurt were also the opposition in the last four of the 1976 European Cup Winners' Cup, in West Ham's last major European semi-final.
The Hammers prevailed 4-3 on aggregate on that occasion and it is the German side they must once again overcome if they are to reach the final in Seville next month, as their hugely impressive Europa League journey continues.
Moyes and his players could already be immensely proud of their European run this season, having topped their group before eliminating Sevilla - among the favourites for the competition - on a memorable night at London Stadium in the last 16.
But the manner of this latest victory, against a club who were Champions League semi-finalists two years ago, means they will rightly believe they can go even further.
Karl Toko Ekambi had struck the post inside the opening five minutes and it required last-ditch defending to deny Houssem Aouar, but West Ham successfully weathered the hosts' dominant start.
That was despite missing left-back Aaron Cresswell, after his first-leg red card, and injured centre-back Kurt Zouma, as the visitors fielded what Moyes described before kick-off as a "patched up" defence.
Bowen volleyed wide on the stretch from Michail Antonio's cross as West Ham began to assert themselves, though, and Lyon were simply left shell-shocked by sucker punches from Dawson and Rice.
A brilliant pass from Fornals picked out Bowen for his 15th goal of the season to move the away side within reach of the semi-finals, but there was still work to be done as Lyon racked up the attempts, to no avail, in the closing stages.
Lyon, 10th in Ligue 1, had not lost in nine Europa League games this term despite their domestic struggles - but their defeat was greeted by unsavoury scenes at full-time as supporters attempted to get onto the pitch, while violence was reported among the home fans in the stands.
helpHow to play
Rate players out of 10 throughout or after the game. The rater will close 30 minutes after the final whistle.
Rating range key1 = Give it up10 = Pure perfection
Lyon
Squad number30Player namePollersbeck
Squad number17Player nameGusto
Squad number5Player nameDenayer
Squad number4Player nameLukeba
Squad number3Player nameEmerson
Squad number23Player nameThiago Mendes
Squad number28Player nameNdombele
Squad number15Player nameFaivre
Squad number8Player nameAouar
Squad number7Player nameToko-Ekambi
Squad number9Player nameDembele
Squad number10Player nameLucas Paquetá
Squad number20Player nameTetê
Squad number22Player nameReine-Adélaïde
Squad number26Player nameBarcola
West Ham United
Squad number13Player nameAreola
Squad number5Player nameCoufal
Squad number15Player nameDawson
Squad number23Player nameDiop
Squad number31Player nameJohnson
Squad number28Player nameSoucek
Squad number41Player nameRice
Squad number20Player nameBowen
Squad number10Player nameLanzini
Squad number8Player nameFornals
Squad number9Player nameAntonio
Squad number7Player nameYarmolenko
Squad number16Player nameNoble
Squad number22Player nameBenrahma
Line-ups
Lyon
Formation 4-2-3-1
30Pollersbeck
17Gusto5Denayer4Lukeba3Emerson
23Mendes Ribeiro28Ndombele
15Faivre8Aouar7Toko-Ekambi
9Dembele
30Pollersbeck17Gusto5DenayerSubstituted forReine-Adélaïdeat 89'minutes4Lukeba3Emerson23Mendes Ribeiro28NdombeleSubstituted forTolentino Coelho de Limaat 45'minutes15FaivreSubstituted forCardoso Lemos Martinsat 45'minutes8AouarSubstituted forBarcolaat 71'minutesBooked at 84mins7Toko-Ekambi9DembeleSubstitutes
10Tolentino Coelho de Lima11Kadewere14Dubois16Barcola19Keita20Cardoso Lemos Martins21Da Silva22Reine-Adélaïde26Barcola27Boateng40BonnevieWest Ham
Formation 4-2-3-1
13Areola
5Coufal15Dawson23Diop31Johnson
28Soucek41Rice
20Bowen10Lanzini8Fornals
9Antonio
13Areola5Coufal15Dawson23DiopBooked at 22mins31Johnson28Soucek41RiceSubstituted forBenrahmaat 90+1'minutes20Bowen10LanziniSubstituted forNobleat 77'minutes8FornalsBooked at 85mins9AntonioSubstituted forYarmolenkoat 84'minutesSubstitutes
1Fabianski7Yarmolenko11Vlasic16Noble22Benrahma24Fredericks26Masuaku33Král35Randolph42Alese51Chesters64PerkinsLive Text
Match ends, Lyon 0, West Ham United 3.
Second Half ends, Lyon 0, West Ham United 3.
Attempt saved. Saïd Benrahma (West Ham United) right footed shot from the right side of the box is saved in the bottom right corner.
Attempt missed. Karl Toko-Ekambi (Lyon) right footed shot from outside the box misses to the left. Assisted by Moussa Dembele with a headed pass.
Thiago Mendes (Lyon) wins a free kick in the defensive half.
Foul by Saïd Benrahma (West Ham United).
Foul by Karl Toko-Ekambi (Lyon).
Craig Dawson (West Ham United) wins a free kick in the defensive half.
Attempt blocked. Jeff Reine-Adélaïde (Lyon) right footed shot from outside the box is blocked.
Attempt blocked. Emerson (Lyon) left footed shot from outside the box is blocked. Assisted by Bradley Barcola.
Substitution, West Ham United. Saïd Benrahma replaces Declan Rice.
Substitution, Lyon. Jeff Reine-Adélaïde replaces Jason Denayer.
Karl Toko-Ekambi (Lyon) wins a free kick in the attacking half.
Foul by Andriy Yarmolenko (West Ham United).
Lucas Paquetá (Lyon) wins a free kick in the defensive half.
Foul by Andriy Yarmolenko (West Ham United).
Attempt saved. Moussa Dembele (Lyon) right footed shot from outside the box is saved in the centre of the goal. Assisted by Lucas Paquetá.
Pablo Fornals (West Ham United) is shown the yellow card.
Substitution, West Ham United. Andriy Yarmolenko replaces Michail Antonio.
Bradley Barcola (Lyon) is shown the yellow card for a bad foul.