Match ends, Lyon 1, Nice 2.
Paris St-Germain remain top of Ligue 1 after title rivals Lyon lost to a late penalty at home to 10-man Nice.
Carlos Eduardo gave mid-table Nice the lead with a fantastic overhead kick.
Lyon levelled when Lloyd Palun was sent off for fouling Nabil Fekir with Maxime Gonalons scoring the penalty.
Valentin Eysseric scored the winner with four minutes left from a penalty after Bakary Kone fouled Alassane Plea.
It was Nice's first Ligue 1 win since beating Marseille, another title contender, in January.
Zlatan Ibrahimovic scored a hat-trick on Friday night as Paris St-Germain beat Lorient to go top.
Marseille, who are five points behind PSG and four off Lyon, visit Lens on Sunday (20:00 GMT).
- 4KonéBooked at 53mins
- 14DaboSubstituted forMalbranqueat 73'minutes
- 21GonalonsBooked at 58mins
- 8GourcuffSubstituted forYattaraat 50'minutes
- 18FekirBooked at 30mins
- 20N'JieBooked at 62minsSubstituted forCornetat 64'minutes
- 21PalunBooked at 54mins
- 6DigardSubstituted forGomisat 63'minutes
- 11BautheacSubstituted forKozielloat 80'minutesBooked at 83mins
- 3de Oliveira AlvesSubstituted forRafetraniainaat 87'minutes
- 14PléaBooked at 79mins
- Antony Gautier
- Shots on Target
Second Half ends, Lyon 1, Nice 2.
Offside, Lyon. Corentin Tolisso tries a through ball, but Bakary Koné is caught offside.
Offside, Lyon. Maxime Gonalons tries a through ball, but Mohamed Yattara is caught offside.
Attempt blocked. Maxime Gonalons (Lyon) left footed shot from outside the box is blocked.
Attempt saved. Christophe Jallet (Lyon) right footed shot from the right side of the box is saved in the bottom right corner. Assisted by Bakary Koné with a headed pass.
Offside, Nice. Simon Pouplin tries a through ball, but Alassane Pléa is caught offside.
Hand ball by Mohamed Yattara (Lyon).
Attempt missed. Maxwell Cornet (Lyon) right footed shot from the right side of the box is close, but misses to the right. Assisted by Maxime Gonalons.
Delay over. They are ready to continue.
Delay in match Romain Genevois (Nice) because of an injury.
Attempt saved. Christophe Jallet (Lyon) header from the centre of the box is saved in the top centre of the goal. Assisted by Steed Malbranque with a cross.
Attempt blocked. Steed Malbranque (Lyon) right footed shot from the centre of the box is blocked. Assisted by Christophe Jallet.
Substitution, Nice. Albert Rafetraniaina replaces Carlos Eduardo.
Goal! Lyon 1, Nice 2. Valentin Eysseric (Nice) converts the penalty with a right footed shot to the bottom right corner.
Penalty conceded by Bakary Koné (Lyon) after a foul in the penalty area.
Penalty Nice. Alassane Pléa draws a foul in the penalty area.
Foul by Maxwell Cornet (Lyon).
Jordan Amavi (Nice) wins a free kick in the defensive half.
Vincent Koziello (Nice) is shown the yellow card for a bad foul.