Lyon's Alexandre Lacazette scored from close range seven minutes from fulltime after Mathieu Valbuena's free kick hit the bar.
Valere Germain headed home in the 18th minute to give the visitors a deserved lead at Parc Olympique Lyonnais.
The hosts had Maxwel Cornet sent off with a straight red card for a challenge on the Nice goalkeeper after 25 minutes, before Lacazette netted his 17th goal of the season.
News that makes sense
Your trusted source for staying up-to-date with the world around you. Get free daily news updates and analysis, straight to your inbox.
Lyon remain second in Ligue 1 on 56 points with four games remaining. Third-placed Monaco, who have one point fewer, take on troubled Olympique de Marseille on Sunday.
Nice are fourth on 54 points, 29 points off leaders Paris St Germain, who take on Caen on Saturday.
(Reporting by Julien Pretot; Editing by Toby Davis)
