Pep Guardiola was forced to watch the Group F opener from his lofty perch in the stands due to a touchline ban, and while City were largely dominant, Lyon's dynamism in attack caused problems and they ultimately managed to hang on.
City controlled possession, but two errors from Fernandinho allowed Lyon to punish them, with Fekir and Cornet giving Bruno Genesio's men a shock – albeit deserved – 2-0 lead at half-time.
Leroy Sane's entrance made a difference and he swiftly set up Bernardo Silva to pull one back, but Lyon dug deep and held off City's late onslaught to secure a famous victory.
City had no problem establishing control and went close 16 minutes in, but Aymeric Laporte's header from a tight angle came back off the post.
Lyon capitalised 10 minutes later – Cornet supplying a cool finish into the bottom-left corner after Fabian Delph missed Fekir's cross.
City should have been given the chance to level from the spot in the 40th minute when Rafael da Silva tripped Gabriel Jesus, but the referee ignored protests and Lyon stunned their hosts again shortly after.
Fekir held off two defenders and then drilled an effort into the bottom-right corner from 20 yards.
City introduced Sane from the bench in the 55th minute to boost their impetus, but a few moments later they had a lucky escape – former Manchester United man Memphis Depay hitting the post from just outside the area.
Sane soon inspired City to get one back, pulling a pass back for Silva to guide home, but it was not enough and Lyon claimed the points.
FULL TIME: #TeamOL show they mean business in the @ChampionsLeague with a 2-1 win at Manchester City!— OL English (@OL_English) September 19, 2018
Goals from Maxwel Cornet and @NabilFekir seal a brilliant result for Les Gones at the Etihad Stadium! #MCOL 1-2 pic.twitter.com/mzZN9NXl2k
What it means: Mortal City with it all to do
City were billed as favourites for this season's competition given their Premier League heroics last term, but they have come unstuck on day one. Lyon were hardly in immense form and failed to beat Caen at the weekend, but their vibrant attacking players caused issues and worried City. Other teams might just look at this with encouragement, while City are left with an uphill struggle already.
Pat on the back: Fired-up Fekir
Fekir could have been a regular foe for City had his pre-season move to Liverpool materialised. He ended up staying, but almost appeared eager to prove a point. He was powerful, driven and tricky in attack, while he also worked hard. His goal was a just reward.
Boot up the backside: Feeble Fernandinho
City's Brazil midfielder Fernandinho coughed up possession in the build-up to Lyon's first goal, and then did exactly the same under pressure from Fekir for their second. None of his team-mates were as culpable.
Key Opta stats:
- Manchester City have become the first English side in Champions League history to lose four consecutive matches in the competition.
- Six of the last eight instances of Manchester City conceding twice in the first half of a match at the Etihad have been in the Champions League.
- Since the start of last season, Nabil Fekir has been directly involved in 35 goals for Lyon in all competitions (25 goals, 10 assists); only Memphis Depay (43) has had a hand in more for the club.
- Only Sergio Aguero (20) has scored more goals in all competitions for Man City during 2018 than Bernardo Silva (9).
City return to Premier League action on Saturday, travelling to promoted Cardiff City. Meanwhile Lyon take on bitter rivals Marseille in Ligue 1 on Sunday, with Genesio's men drawing 2-2 with Caen last time out.