Match ends, Lyon 2, Paris Saint Germain 1.
Paris St-Germain's 36-match unbeaten run in Ligue 1 was ended as Lyon beat them to move into the third and final Champions League qualification spot.
Maxwell Cornet controlled Alexandre Lacazette's pass to drive in an opener.
Sergi Darder added an exquisite second on half-time, controlling Rafael's cross and flicking it past Kevin Trapp.
Despite Lucas Moura's steered finish, PSG lost their first league game since last March, but still have a 23-point lead at the top.
Laurent Blanc's side had not lost a league match since a 3-2 defeat at Bordeaux 11 months earlier, but looked off the pace and struggled without the creative influence of injured winger Angel di Maria.
After Cornet's opener, PSG could have been reduced to 10 men, as midfielder Thiago Motta escaped with a booking for raising his fist to the side of Jordan Ferri's head.
The leaders' best spell of pressure came shortly before Darder made it 2-0, with Zlatan Ibrahimovic having a shot beaten out by Lyon keeper Anthony Lopes.
PSG rarely looked like equalising after Lucas scored, and the excellent Rachid Ghezzal should have added a third for the home side when clean through, but Trapp advanced from his line to block.
Monaco, in second place, end the weekend having narrowed the gap at the top, despite dropping points themselves in a 0-0 draw at Nantes.
Caen had moved above Lyon and into third earlier on Sunday by winning 2-1 at St-Etienne, with former Wigan striker Andy Delort among the scorers.
- 20da SilvaBooked at 73minsSubstituted forKemenat 75'minutes
- 2Yanga-MbiwaBooked at 43mins
- 12FerriBooked at 72mins
- 14DarderSubstituted forLabidiat 88'minutes
- 27CornetSubstituted forKonéat 84'minutes
- 23Van der WielBooked at 58mins
- 2Thiago Silva
- 32David Luiz
- 17Cabelino Andrade
- 4StambouliSubstituted forPastoreat 45'minutes
- 8MottaBooked at 23mins
- 25RabiotBooked at 74minsSubstituted forMatuidiat 78'minutes
- 7Lucas MouraBooked at 89mins
- 9CavaniBooked at 63mins
- Lionel Jaffredo
- Shots on Target
Second Half ends, Lyon 2, Paris Saint Germain 1.
Offside, Paris Saint Germain. Thiago Motta tries a through ball, but Edinson Cavani is caught offside.
Hand ball by Alexandre Lacazette (Lyon).
Lucas Moura (Paris Saint Germain) is shown the yellow card for a bad foul.
Foul by Lucas Moura (Paris Saint Germain).
Rachid Ghezzal (Lyon) wins a free kick in the defensive half.
Substitution, Lyon. Zakarie Labidi replaces Sergi Darder.
Offside, Paris Saint Germain. Javier Pastore tries a through ball, but Zlatan Ibrahimovic is caught offside.
Substitution, Lyon. Bakary Koné replaces Maxwell Cornet.
Attempt saved. Rachid Ghezzal (Lyon) left footed shot from the right side of the box is saved in the bottom right corner. Assisted by Alexandre Lacazette.
Lucas Moura (Paris Saint Germain) wins a free kick in the attacking half.
Foul by Jérémy Morel (Lyon).
Lucas Moura (Paris Saint Germain) wins a free kick on the left wing.
Foul by Olivier Kemen (Lyon).
Substitution, Paris Saint Germain. Blaise Matuidi replaces Adrien Rabiot.
Javier Pastore (Paris Saint Germain) wins a free kick in the attacking half.
Foul by Sergi Darder (Lyon).
Substitution, Lyon. Olivier Kemen replaces Rafael.
Adrien Rabiot (Paris Saint Germain) is shown the yellow card for a bad foul.