Manchester City reached the Champions League last 16 as Sergio Aguero rescued a draw in Lyon which means topping Group F remains in their own hands.
Lyon wasted several chances before Maxwel Cornet rifled in an angled drive to give them an early second-half lead.
Aymeric Laporte steered in Raheem Sterling’s free-kick seven minutes but Cornet fired in again to put Lyon top.
However, Aguero reacted quickest to flick in a header two minutes later to earn City what could be a vital point.
City remain top of Group F on 10 points – three clear of Lyon – meaning a draw in their final game against Hoffenheim will be enough to progress as group winners.
Finishing top would ensure City will not be drawn against another group winner – with the likes of Real Madrid, Bayern Munich and Juventus currently topping their groups – in the last 16.
Lyon looked set to join City in qualifying for the knockout stage with the draw, until Shakhtar Donetsk scored a late winner for a 3-2 victory at Hoffenheim.
The French side still need a point in their final game against Shakhtar in Ukraine to progress
Premier League leaders City have swept aside almost everything put in front of them domestically this season, but were given another tough test by a Lyon team which had been the only one to beat them in their previous 26 matches.
The French side, who are second in Ligue 1 but 15 points adrift of leaders Paris St-Germain, won 2-1 at Etihad Stadium in the opening group game back in September.
Again they caused City problems with their pace and power in the attacking third, with former Manchester United forward Memphis Depay and Cornet – who also scored in the reverse fixture – at the heart of their most potent play.
City have only conceded five goals in 13 Premier League matches this season, but Lyon have shown they can be vulnerable after scoring four against them in 180 minutes.
While City were uncharacteristically opened up at the back, they showed characteristics of a great side which they have not had to show too often under Pep Guardiola: the resilience to fight back from behind.
City lacked their usual attacking rhythm – more down to Lyon’s intensity than a lack of their own – but showed their quality at set-pieces through Laporte and Aguero to earn a hard-fought draw.
“Lyon have good players in good areas and quick players but we got a good draw,” City defender Kyle Walker said.
“That shows the character and belief in the dressing room. Important players come good at the right time.”