Paris St Germain saw their record-breaking unbeaten run in Ligue 1 ended as Lyon beat them 2-1 at Parc OL.
The French champions had gone 36 league games without defeat - a sequence stretching back to a 3-2 reverse at Bordeaux last March - but their hopes of an invincible season were ruined by first-half goals from Maxwel Cornet and Sergi Darder.
Lucas Moura gave PSG hope with a 51st-minute strike, but the runaway Ligue 1 leaders were well below their best without injured pair Marco Verratti and Angel Di Maria, and Lyon should have won by a more handsome margin.
Lyon had already lost four times to PSG this season, including a 5-1 league thrashing at the Parc des Princes in December, but they are yet to lose at their new Parc OL home which they moved to in January.
The victory - Lyon's fourth in five games - takes them back into the Champions League places and was their first over PSG in eight attempts.
Lyon's positive start was rewarded after 13 minutes when Alexandre Lacazette found Cornet on the edge of the area and he was allowed too much space by Gregory van der Wiel to cut back onto his right foot and score.
Kevin Trapp soon had to bat away Darder's powerful 20-yard drive and PSG were lucky not to be reduced to 10 men after 22 minutes when Thiago Motta lost his composure.
Motta tangled with Jordan Ferri and struck him with his left arm, but referee Lionel Jaffredo brandished a yellow card when a red might have been more appropriate.
Lyon were rampant, forcing PSG into mistakes by pressing high and launching devastating counter-attacks, and Trapp kept out Rachid Ghezzal's deflected shot.
Ghezzal missed out again after more excellent one-touch football from Lyon and it took 35 minutes for PSG to threaten for the first time.
Moura saw his acrobatic attempt pushed around the post by Anthony Lopes before the goalkeeper held Thiago Silva's header from the resulting corner.
Lopes then denied Zlatan Ibrahimovic, a bystander until that point, but PSG's growing momentum was halted in the second minute of added time.
Lacazette slipped in Rafael down the right and the former Manchester United fullback was allowed time to measure his centre.
The Brazilian's cross was behind Darder, but the Spaniard lofted the ball over Silva and beat Trapp with the outside of his right foot for one of the goals of the Ligue 1 season.
Lyon might have put the game beyond PSG but for Trapp's full-stretch save foiling Cornet within two minutes of the restart.
But PSG quickly halved the deficit when Javier Pastore, a half-time substitute for Benjamin Stambouli, made an immediate impact.
Pastore's persistence saw the ball break to Moura and, although no more than a half-chance, the Brazilian produced a wonderful finish for his eighth goal of the season.
Despite the setback, Lyon still showed real attacking intent with Ferri firing wide after a breathtaking Cornet run and Trapp saving point-blank from Ghezzal after the PSG defence went absent without leave.
Trapp won his personal battle with Ghezzal again in the final 10 minutes, but Lyon were beginning to tire as PSG made one final push to keep their unbeaten record intact.
However, Lyon held out and PSG finally tasted defeat after going 46 matches unbeaten in all domestic competitions.