Sky Bet League 1 leaders Leyton Orient saw their 100 per cent record come to an end as Walsall secured a 1-1 draw at Brisbane Road, where both teams finished with 10 men.
Walsall defender Andy Butler was shown a straight red card for a foul on Romain Vincelot before David Mooney put the hosts ahead before half-time.
However, a close-range strike from Craig Westcarr levelled things up, with Vincelot picking up a second yellow card in stoppage time.
Peterborough United took advantage to close the gap to three points as they won 1-0 at Rotherham United, who had been unbeaten, through a second-half penalty from Grant McCann.
Wolverhampton Wanderers are third after they beat Sheffield United - who drop to the bottom - 2-0 at Molineux with second-half goals from Leigh Griffiths and Bakary Sako.
Preston North End were 2-1 winners over Swindon Town at Deepdale. Iain Hume and an own goal from Jay McEveley - chipping his own keeper - set the hosts on their way, with Dany N'Guessan scoring a late consolation.
James Hanson scored a stoppage-time winner as Bradford City came from behind to beat Shrewsbury Town 2-1.
Tom Bradshaw got the visitors off to a flying start but Kyel Reid levelled on the hour. Shrewsbury had defender Dave Winfield sent off for a second yellow card and the Bantams made their extra man count with Hanson's dramatic late winner.
Milton Keynes Dons are also in the top six after they dispatched Stevenage 4-1, with Patrick Bamford scoring twice.
At the other end of the table, Notts County remain in the bottom four after they lost 2-1 at Carlisle United.
County had led through Callum McGregor but could not hold on as a free-kick from Matt Robson and David Amoo gave the home side all three points.
Tranmere Rovers had Liam Ridehalgh sent off as they were beaten 1-0 at home by Port Vale. Tom Pope missed a first-half penalty for the visitors but Chris Lines was on target in the second half.
Gillingham ran out 3-0 winners at Crewe Alexandra, with goals from Cody McDonald, Joe Martin and Adam Barrett.
Bristol City and Colchester United drew 1-1, while an early goal from defender Joe Walsh proved enough to give Crawley Town a 1-0 home win over Oldham Athletic.
QUICK LINKS: RESULTS | TABLES | LINE-UPS | STATS | FIXTURES