An own goal by Mamadou Sakho and a Pierre Emerick Aubameyang strike saw St Etienne inflict a first defeat of the season on Paris Saint Germain, with the Ligue 1 leaders' misery compounded by the sending off of Zlatan Ibrahimovic.
Sakho turned the ball into his own net 10 minutes into the second half and, to make matters worse for PSG, Ibrahimovic was given a straight red card a quarter of an hour later for a challenge on goalkeeper Stephane Ruffier.
St Etienne took advantage and two minutes later doubled their lead through Aubameyang, and although Guillaume Hoarau pulled one back with four minutes remaining, the hosts could not prevent their first loss of the season.
The defeat could cost PSG top spot on Sunday, but Toulouse would need to beat Bordeaux by three clear goals away from home to do it. The looming spectre of Marseille, four points behind but with two games in hand as they prepare to face AC Ajaccio, might be of more concern to the capital club.
Valenciennes continued their free-scoring ways to move up to fourth in Ligue 1 with a convincing 3-1 victory over Sochaux.
Foued Kadir's 11th-minute strike was followed by a brace from Daniel Pujol that took Valenciennes to 23 goals for the season, and took them to within four points of the summit.
Sebastien Roudet registered for Sochaux but only after they had gone 3-0 down and the visitors remain rooted in the bottom three.
Valenciennes are above St Etienne on goals scored alone, although Lyon can jump above both of them - and as high as second if results go their way - when they face Bastia.
Lille sit seventh after stretching their unbeaten Ligue 1 run to four matches with a 2-0 victory at struggling Evian.
Nolan Roux and Florent Balmont were on target for the visitors.
A goal late in the first half from Mevlut Erding saw Rennes claim their fourth win of the season and leapfrog 10-man Reims to move up to eighth.
However, the visitors deserve some credit for conceding a solitary goal given they had to play for 76 minutes with 10 men following the sending off of Pape N'Diaye Soure for a nasty challenge on Jonathan Pitroipa.
Eric Bautheac scored an 81st-minute winner as Nice pulled away from Ligue 1's bottom three with only their second win of the season, beating Nancy 2-1.
Bautheac's corner had set up the opener for Mahamane Traore, but Salif Sane equalised on the stroke of half-time.
It appeared for a long time as though Nice were destined for their seventh draw in 11 league games this season but Bautheac had other ideas, turning home a cut-back from Jeremy Pied.
An evenly-matched clash between Troyes and Montpellier ended with a fitting 1-1 draw at Stade de l'Aube.
The visiting side took the lead after 19 minutes when Younes Belhanda put the finishing touch to a fine passing move but second-bottom Troyes levelled four minutes before the break via Fabien Camus.