A winless September saw Swansea slip from the summit, but it hit back after Jonathan Leko's early opener at The Valley through goals from Yan Dhanda and Andre Ayew.
Derby was on the brink of making it back-to-back victories after a turbulent start to the campaign in its meeting with Barnsley, only for Conor Chaplin to snatch a 2-2 draw for the struggling host deep into additional time.
A Chris Martin strike and Tom Huddlestone's penalty had given Derby the lead after Aapo Halme opened the scoring at Oakwell, though Phillip Cocu's side could not hold on and sit in 16th place.
Millwall's wait for a Championship win now stands at seven matches after they played out a 1-1 draw with fellow struggler Luton Town at Kenilworth Road.
Tom Bradshaw looked to have given Millwall the win with his sliding finish on the hour, but Callum McManaman scored his first goal for Luton late on after being brought on as a substitute.
Cardiff City made it seven league matches without defeat as it saw off Queens Park Rangers in south Wales.
Sean Morrison gave Cardiff the lead 11 minutes in and further goals followed either side of half-time from Marlon Pack and Callum Paterson.
The win lifts Neil Warnock's men into 10th, just a point behind seventh-placed Bristol City following the Robins' 1-1 draw at Brentford.
A point was a positive result for the visitors in the end, however, as Andreas Weimann headed home three minutes from time at Griffin Park to cancel out Josh Dasilva's 64h-minute opener.