Table topping Sheffield United were brought back to earth with a bump after a shock 4-1 defeat at Walsall.
Blades had won their last six League One matches but were very much second best against their mid-table hosts.
Amadou Bakayoko scored an early opener for the Saddlers but Blades were soon back on level terms through Jack O'Connell's header.
But second-half goals from Jason McCarthy, Joe Edwards and Erhun Oztumer - with a penalty - secured a comprehensive win for the hosts.
Blades remain on top of the table but saw their lead chopped to one point as second-placed Scunthorpe edged out Northampton 2-1.
Kevin van Veen headed the visitors in front but Alex Revell levelled late in the first half for Northampton, before Josh Morris grabbed the 83rd-minute winner when he curled in from the edge of the area.
Scunthorpe are now five points clear of Bolton, who lost 2-1 at home to Swindon
Meanwhile, Bradford City slipped to a single goal defeat at Shrewsbury Town.