The Ligue 1 side shocked Pep Guardiola’s men, to book their spot in the semi-final, where they face favourites Bayern Munich.
With City looking to turn the screw, substitute Moussa Dembele netted a late brace to win the game.
The other semi-final clash will see Paris Saint-Germain take on RB Leipzig.
Both matches will be played in Lisbon next week.
Tuesday 18 August
8pm | RB Leipzig vs PSG | Lisbon
Wednesday 19 August
8pm | Lyon vs Bayern | Lisbon
Champions League final
Sunday 23 August | 8pm | Lisbon
All fixture dates are subject to change