Manchester City booked their place in the last 16 of the Champions League with an entertaining 2-2 draw against Lyon, as the French side tested the reigning Premier League champions.
Both sides passed up glorious opportunities to open the scoring inside the opening 15 minutes, as Memphis Depay fluffed his volley in front of goal, before Riyad Mahrez at the other end could only fire straight at Anthony Lopes from a central position.
Lyon then waste an even better chance in the 29th minute, but Maxwel Cornet failed to get Ferland Mendy's cross under control, resulting in a skied effort from inside City's six yard box, before the Ivorian struck the post with a volley at the end of the first period, as the visitors were fortunate to enter half-time still in the game.
After wasting two great chances in the first half, Cornet made amends ten minutes into the second half, with the forward curling in a sumptuous effort from 18 yards out to give Lyon a deserved lead.
The goal appeared to wake City up, as Sergio Aguero almost got an immediate equaliser for the Premier League side, however Lopes did well to keep out the Argentine's header, but could do nothing about Laporte's header just past the hour mark.
Chances came and went for both sides following Laporte's goal, before a mad two minutes saw each time score once again. Cornet grabbed his second of the game with a cool finish in the 81st minute, however Aguero's header two minutes later meant Lyon's joy was short-lived, and helped City secure their place in the last 16.
Key Talking Point
Manchester City had to contend with a number of injuries ahead of the games against Lyon, with Bernardo Silva, Ilkay Gundogan and Gabriel Jesus not in the matchday squad, while Kevn de Bruyne and Benjamin Mendy are long-term absentees, as those injuries left City stretched.
Pep Guardiola's side were below par, especially in the first half, as Lyon could've been out of sight had they been more clinical, although they didn't head their warning with poor defending for both of the French side's goals.
To City's credit, they responded well on both occasions, such is the quality in their side, and ultimately got the job done of reaching the knockout stages of the Champions League, however it was far from a vintage display.
Starting XI: Ederson (6); Walker (6), Stones (7), Laporte (8*), Zinchenko (5); Sterling (6), Fernandinho (5), D. Silva (6); Mahrez (5), Aguero (7), Sane (5).
Substitutes: Delph (5), Foden (N/A).
Head and shoulders above his teammates, Aymeric Laporte once again gave an assured display at the heart of City's defence.
The Frenchman was on hand on a couple of occasions in the first half to snuff out dangerous opportunities for Lyon, while his composure on the ball was evident throughout.
Laporte even got himself on the score sheet with an important header to equalise following Cornet's opener to cap a fine display from the centre back.
Filling in at left back, Oleksandr Zinchenko was far from convincing as Pep Guardiola gave him a rare start against Lyon.
The Ukrainian international's passing was off for large parts of the night, while his defending to allow Cornet onto his stronger left foot for the opening goal of the game left a lot to be desired.
Starting XI: Lopes (6); Rafael (6), Denayer (7), Marcelo (6), Marcal (6), Mendy (8); Ndombele (8*), Aouar (5); Fekir (6); Depay (7), Cornet (8).
Substitutes: Tete (5), Traore (N/A), Terrier (N/A).
Lyon return to Ligue 1 action this weekend with a tough away game against LOSC Lille, before facing Shakhtar Donetsk away from home in their final Champions League game, with anything but a defeat ensuring their place in the last 16.
Manchester City meanwhile host Bournemouth in the Premier League this weekend, while their final Champions League game at home to Hoffenheim gives Pep Guardiola the chance to rest key players having now secured their place in the knockout stages.