Two goals in the last 10 minutes from substitute Moussa Dembele saw Manchester City crash out of the Champions League quarter-finals once again after losing 3-1 to Lyon.
In a thrilling and drama-filled conclusion, VAR allowed a Dembele breakaway goal to stand despite an apparent foul in the build-up before Raheem Sterling missed an open goal moments before Dembele's tap-in from Ederson's error confirmed City's shock exit.
As with their group-stage meetings last season, City went into the game as huge favourites but Lyon once again caused an upset, with Maxwell Cornet (24) - who has scored four times against City - putting his side ahead in the first half.
- Where Pep Guardiola got it wrong
- No excuses from Pep Guardiola
- Champions League state of play | Fixtures
A superb finish from Kevin De Bruyne (69) hauled City level and they looked the more likely to win in the spell of dominance that followed.
But Lyon had an ace up their sleeve in top scorer Dembele, who put the Ligue 1 side back ahead in the 79th minute. City will once again feel aggrieved by VAR in the Champions League as the Frenchman was not penalised for a foul on Aymeric Laporte in the build-up.
Dembele (87) then scored again 59 seconds after Sterling had blazed over from six yards with an open goal on offer. The former Celtic and Fulham forward slotted home a rebounded save from Ederson to set up a semi-final tie against Bayern Munich on Wednesday.
City have once again failed to advance past the quarter-final stage, being knocked out in the final eight in three successive seasons.
How City crashed out of Europe once again
City fired off a warning inside three minutes as they dominated possession in the opening exchanges. Sterling darted in front of Leo Dubois, but his cut-back for De Bruyne was cut out by Fernando Marcal.
Neither side particularly threatened from then on but Lyon went ahead in the 24th minute. It was a superb long pass from Marcal that picked out Karl Toko Ekambi, with the striker bursting into the area.
Eric Garcia made a good tackle to take the ball from his feet but Cornet was lurking just behind and sent a sumptuous curling effort into the bottom corner. There was a question of offside in the build-up but after a VAR check, the goal rightly stood.
Man City: Ederson (5), Walker (6), Garcia (6), Laporte (6), Cancelo (7), Fernandinho (7), Rodri (6), Gundogan (6), De Bruyne (7), Sterling (7), Jesus (6).
Subs used: Mahrez (6), D Silva (5).
Lyon: Lopes (6), Denayer (7), Marcelo (7), Marcal (6), Dubois (7), Cornet (7), Caqueret (6), Guimaraes (6), Aouar (7), Ekambi (7), Depay (5).
Subs used: Mendes (5), Tete (5), Dembele (8), Reine-Adelaide (6).
Man of the match: Moussa Dembele.
City knew they had to come from behind against Lyon once again and despite a quiet start, goalkeeper Anthony Lopes was far busier in the final 15 minutes of the half. He made an acrobatic double save just after the half-an-hour mark, leaping with an outstretched hand to push away a Joao Cancelo cross before smothering Ilkay Gundogan's attempted effort from the rebound.
Both sides had some half chances at the start of the second half. Lopes made a leaping save to keep a thunderous De Bruyne free-kick out while a second from the Belgian a little while later flew past the top corner. Marcelo also tried his luck at the other end, but his effort from range was easily saved by Ederson.
- Man City made one change with Phil Foden dropping to the bench and Eric Garcia coming in at the back.
- Rudi Garcia named the same starting XI for Lyon with former Manchester United forward Memphis Depay leading the line.
But De Bruyne hauled City level in the 69th minute in a wonderful team move. A superb pass from Riyad Mahrez picked Sterling out on the left of the area, and he nipped the ball easily around former City academy player Jason Denayer. He then pulled the ball back for the incoming De Bruyne, who in acres of space, sweetly finished past the leaping Lopes.
Gabriel Jesus should have scored not long after, but after some strong hold-up play from Sterling, could only loop a skewed volley onto the top of the net. City were made to pay for the miss too when Dembele put Lyon back ahead just four minutes after replacing the quiet Memphis Depay.
Ekambi let a pass fizz through his leg and into the path of the former Celtic striker to his left. Dembele then strode into the area before slotting home through the legs of Ederson, but the celebrations were halted as VAR checked the goal for a foul in the build-up.
David Silva has officially played in his last Manchester City game after coming on as an 84th minute substitute. He leaves after ten years with 435 appearances, 77 goals and 14 major trophies.
Dembele had tangled legs with Laporte before receiving the ball, sending the defender to ground, but VAR deemed that it was not enough to chalk off the goal and it stood. The decision will surely bring back memories of the VAR chaos that reigned in City's quarter-final second leg against Tottenham in April last year.
City had their chances to score but were guilty of some poor finishing and none more so than Sterling in the 86th minute.
Jesus did well to dart down the left of the are with defenders closing in before scooping out a cross for his team-mate towards the back post. With his form this season, you would bank on Sterling scoring with an open goal ahead of him, but he could only send the ball flying over in one of the misses of the season.
And 59 seconds later, Lyon sealed their spot in the semi-finals. Jeff Reine-Adelaide drove towards the area before picking out Houssem Aouar to his left. He saw his own shot saved by Ederson but it was spilled into the path of the waiting Dembele who had an easy tap-in.
Sky Sports' Ron Walker...
"A back three to match up against a Lyon side who finished in mid-table in the abridged Ligue 1 season, with a notable lack of the technical genius that has underpinned the free-scoring success of Guardiola's City, had not been on the cards in most people's predicted line-ups.
"No David Silva, no Bernardo Silva, no Phil Foden, no Riyad Mahrez. At least one had played in each of the 57 previous games this season. Only Kevin De Bruyne was the one creative wizard tasked with unlocking the Lyon defence, however. But even arguably the best midfielder in the world can only do so much on his own.
"If the issue needed more exposure, the introduction of Mahrez 11 minutes into the second period provided it. City immediately looked a more coherent attacking unit with him in the side, and it was no surprise when he played a part in his side's equaliser barely 10 minutes later.
"Guardiola will, and has already, pointed to his side's inability to take the chances they did create after half-time - Raheem Sterling may have his shocking miss ruminating around his head by the start of next season. While he is right, the fact it took a personnel change and 75 minutes before City created the kinds of chances worthy of looking back on with regret is just as valid an argument."
Man of the match - Moussa Dembele
It's unusual to give man of the match to a player who only featured for around 20 minutes, but Dembele's impact on the game was massive. He has started on the bench in the last two European games with Ekambi preferred to partner Depay up front. However, the former Celtic man showed just why he deserves a starting berth against Bayern on Wednesday.
Yes, his first goal will be shrouded in controversy after he was not penalised for foul on Laporte in the build-up, but he showed exactly why Manchester United have been linked with him with a cool finish. His second was also well taken as he took advantage of an Ederson error and did exactly what a striker should do.
The cameo will only increase his reputation around the continent and he has another chance to show when he can do in the semi-finals next week.
Man City manager Pep Guardiola: "One day we will break this gap. The second half was OK, I had a feeling we were better but you have to be perfect in these competitions.
"I don't want to talk about the circumstances [of Dembele's first goal], it looks like I'm complaining or finding excuses. We are out. We did a lot of good things and in the end it was not enough.
"We made mistakes in both boxes at key moments and that's why we are out. We scored a magnificent goal but unfortunately we missed another one. You have to be perfect, you cannot make mistakes.
"The show must go on and now it's time for the players to take a break, we are going to get in as many days as possible. Next season will be so strong and demanding, but not the time to think about this… So [we will] try to sleep a little bit and pass 24 hours, 48 hours and then we start to think about next season."
Lyon manager Rudi Garcia: "I'm proud of my players. We believed in ourselves. We knew we weren't favourites and we were playing a top team.
"Above all our success was down to our team spirit. Everyone worked for each other and the substitutes helped a lot. We won the tactical battle. There are still matches to be played and hurdles to overcome and we'll try to overcome them."
- Lyon's Rudi Garcia is the first French manager to guide a French team to the Champions League semi-finals since 2009-10 (Claude Puel & Lyon).
- Since progressing from his first seven Champions League quarter-finals as a manager with Barcelona and Bayern Munich, Pep Guardiola has been eliminated in each of his three appearances at this stage of the competition with Man City (17-18, 18-19 & 19-20).
- Man City's Raheem Sterling made his 50th Champions League appearance tonight, aged 25 years and 251 days; the only Englishman to reach this milestone at a younger age was Wayne Rooney in 2010 (24 years, 115 days).
Lyon will face Bayern Munich in the Champions League semi-finals on Wednesday August 19 (8pm kick-off).
Lyon vs Bayern Munich (August 19, Estadio da Luz)
RB Leipzig vs PSG (August 18, Estadio Jose Alvalade)
Sunday August 23