Paris Saint-Germain's Ligue 1 title charge suffered a surprise blow as they slumped to a 1-0 defeat away to the 10 men of relegation-battling Reims.
Zlatan Ibrahimovic had a goal controversially disallowed early in the second half on Saturday, and Reims then had Christopher Glombard sent off for a second bookable offence before the hour mark.
But Reims still ran out winners as Grzegorz Krychowiak scored the only goal in the 64th minute.
The result means Lyon can move level on points with PSG by beating Brest away from home on Sunday.
Nice paid the price for the first-half dismissal of Valentin Eysseric as Saint-Etienne moved into third place with an emphatic 4-0 win.
Saint-Etienne led early on through Pierre-Emerick Aubameyang's penalty but the game turned on the 23rd-minute dismissal of Eysseric, whose ugly challenge on Jeremy Clement spelled the end of the night for both men.
Nice held out with 10 men until the break only for the floodgates to open in the second half, with Yohan Mollo scoring in between Brandao's brace.
Nancy climbed off the bottom of the table after upsetting Sochaux 2-1 to claim only their fourth win of the season.
First-half goals from Benjamin Moukandjo and Florent Zitte put Nancy in charge, and Sochaux halved the deficit through Sloan Privat's acrobatic effort in stoppage time at the end of the game.
Toifilou Maoulida scored the only goal as Bastia beat Ajaccio in a fiery Corsican derby but it was the dismissals of five players, four in the final minute, which will create the headlines.
Maoulida struck early in the second half, with Ajaccio's hopes of a comeback not helped by a second yellow card for Mathieu Chalme 10 minutes from time.
However, what had been an entertaining match was overshadowed by events in the dying moments when Dennis Oliech's dismissal for an ugly challenge on home goalkeeper Mickael Landreau sparked a brawl which resulted in red cards for team-mate Benjamin Andre and Bastia duo Florian Thauvin and Jerome Rothen.
Evian played out an uninspiring goalless draw with Toulouse, while Gael Danic's 79th-minute penalty ensured Valenciennes claimed a 1-1 draw at Lorient.
The hosts had taken a third-minute lead through Kevin Monnet-Paquet's low strike, but Danic slotted home from the spot late on after Lorient defender Arnaud Le Lan had handled in the area.