The setback on Wednesday night leaves City at the bottom of Group F, although a 2-2 draw between Shakhtar Donetsk and Hoffenheim means that Pep Guardiola's team are just a point adrift of second spot.
Lyon started brightly in the North-West of England with Houssem Aouar dragging a low effort wide from distance, but City soon responded with Raheem Sterling posing a frequent threat down the left-hand side.
The home team almost went in front when Aymeric Laporte struck the post with a header from an acute angle having got on the end of Ilkay Gundogan's cross, but that was as good as it got for City as Lyon began to put their hosts under pressure at the other end.
A move from the back almost led to Sterling giving City the lead, but one minute later Lyon went ahead when a cross from the left was not dealt with by Fabian Delph and Cornet sent a half-volley into the bottom corner from a tight angle.
Delph attempted to redeem himself with a deflected shot which was eventually claimed by Anthony Lopes at the second attempt, while Gabriel Jesus appealed for a penalty when going down under a challenge from Rafael, but the former Manchester United full-back pulled his leg away as the attacker attempted to instigate contact.
City were showing signs of improvement, but Lyon doubled their advantage two minutes before half time when Fekir was given the space to run towards goal and the France international took his time before drilling a low strike into the bottom corner from 20 yards out.
The home side opted against making any changes at the break, but there was a higher intensity after the restart with Fernandinho and Jesus both going close with shots from 20 yards out.
However, Lyon soon began to show their quality on the counter and came within inches of a third on the hour mark when Memphis Depay ran onto a through-ball by Tanguy Ndombele before seeing Ederson tip his shot onto the post.
The near miss sparked City back into life with two neat moves leading to Delph getting shots away from the edge of the area, the second of which was well dealt with by Lopes down to his right.
City finally found their goal with a quarter of the match remaining when substitute Leroy Sane took the ball around a defender before teeing up Bernardo, who found the far bottom corner from 12 yards.
Aguero almost equalised in the final minute of normal time with the Argentine seeing a shot tipped over the crossbar by the excellent Lopes, but that proved to be the final chance to leave City with work to do in order to get their European campaign back on track.
MANCHESTER CITY (4-2-3-1): Ederson; Walker, Stones, Laporte, Delph; Fernandinho, Gundogan (Sane 55'); Silva, Bernardo, Sterling (Mahrez 76'); Jesus (Aguero 63')
LYON (4-2-3-1): Lopes; Rafael (Dubois 76'), Marcelo, Denayer, Mendy; Ndombele, Diop; Cornet (Traore 92'), Fekir (Toustart 79'), Aouar; Depay