Depleted by injuries and deprived of a clear game plan, Lyon showed character and clinical efficiency to come from behind and win 2-1 at Strasbourg in Ligue 1.
On a cold Saturday evening in Alsace, Lyon suffered throughout and converted their few chances.
Midfielder Jeff Reine-Adelaide snatched the winner 15 minutes from time from Maxwel Cornet's assist after the Lyon striker cancelled Strasbourg's opener.
The result, which ended a four-game home winning run for Strasbourg, lifted Lyon to sixth place in the standings, 11 points behind leadera Paris Saint-Germain.
With a bunch of injuries already, Lyon coach Rudi Garcia lost another important player as defender Leo Dubois hobbled off the pitch in the 83rd minute with an apparent knee injury.
Forced to reshuffle his line-up, Garcia handed 19-year-old midfielder Maxence Caqueret his first start as a replacement for Thiago Mendes, one of three key players missing the game through injury alongside Memphis Depay and Houssem Aouar.
Youssouf Fofana struck on 22 minutes to give Strasbourg the lead before Cornet replied five minutes before the break.
Lyon weathered the hosts' pressure in the second half and patiently waited for an opening that came in the 75th.
Slowing down the pace from the edge of the box, Cornet made a precise cross at the far post for Reine-Adelaide to head in.
Juan Ferney Otero's second-half dismissal caused a collapse as Amiens lost 4-2 at Montpellier, who climbed to fourth.
Amiens conceded three goals in the space of eight minutes after the Colombian striker was sent off for an ugly foul on Hilton.
Montpellier produced their biggest win this season as Gaetan Laborde, Andy Delort and Pedro Mendes struck to add to Damien Le Tallec's first-half opener.
Victor Osimhen scored his eighth goal this season, this one from the penalty spot on halftime, to give Lille a 1-0 win over Dijon.
Third-placed Angers suffered a 3-1 loss despite going ahead through Angelo Fulgini.
The hosts hit back with goals from Arnaud Lusamba, Myziane Maolida and Kasper Dolberg.
Elsewhere, Nimes and Metz drew 1-1 while Bordeaux and Reims also shared the spoils with an identical result.