Sky Bet League One leaders Sheffield United saw their advantage at the top of the table cut after Oldham held them to a 1-1 draw at Boundary Park.
Tope Obadeyi put the Latics in front just before half-time, but the Blades were level early in the second half when Jay O'Shea drilled in a low shot from the edge of the penalty area.
Bolton took full advantage to close the gap to four points after a 2-0 victory at Shrewsbury.
Mark Beevers headed the visitors in front six minutes into the second half, with Adam Le Fondre netting from close range in the 65th minute to secure a fifth straight win.
Third-placed Fleetwood could only manage a goalless draw at Bury.
Bottom club Coventry snatched a late 1-0 win over Bristol Rovers at Ricoh Arena with a goal from George Thomas with 10 minutes left.
Southend moved up into the play-off places after a 2-0 victory at AFC Wimbledon.
Nile Ranger put the Shrimpers ahead in the 35th minute with his third goal in as many games, and Simon Cox wrapped up the points 30 minutes later as Phil Brown's men recorded a third successive win.
Millwall, though, saw their top-six hopes dented with a 1-0 defeat at Swindon, where midfielder Conor Thomas scored a dramatic winner deep into stoppage time to boost the Robins' survival hopes.
Rochdale kept up their late play-off push with a 3-1 win at struggling Chesterfield.
The visitors took the lead after 16 minutes through Ian Henderson, with Callum Camps doubling the advantage five minutes before the break, but there was still time for Dale midfielder Jamie Allen to net a third.
The Spireites netted a consolation from Kristian Dennis early in the second half, but finished the match with 10 men after substitute David Faupala was dismissed for violent conduct in stoppage time and remain 10 points from safety.
Port Vale edged a point closer to fifth-bottom Shrewsbury and safety after they battled to a 0-0 home draw against MK Dons.
Substitute Junior Morias cracked home a 25-yard effort in stoppage time to earn Peterborough a 1-0 win at Gillingham.
There was no such drama at Sixfields where Northampton and Oxford played out a goalless draw.