League One leaders Burton Albion stayed top with a goalless draw at home against Sheffield United, but conceded ground to the chasing pack as a result.
Walsall closed the gap on Jimmy Floyd Hasselbaink's side to just one point with a 1-0 win at Scunthorpe United thanks to Rico Henry's first goal for the club.
Meanwhile, Gillingham routed 10-man Fleetwood Town 5-1 to move within two points of the league leaders thanks to a brace from Rory Donnelly - including a 35-yard lob - as well as goals from Jordan Houghton, John Egan and Cody McDonald.
Fifth-placed Bury won a rollercoaster clash at London Road as Tom Pope's late goal sealed a dramatic 3-2 comeback win for David Flitcroft's side, while Rochdale, who were 3-0 ahead inside 15 minutes, held off a Shrewsbury Town fightback to win 3-2 at Spotland.
Wigan Athletic's clash with Millwall - a Championship fixture last year - was just as dramatic as Will Grigg's third goal of the season rescued a 2-2 draw for the Latics, while goals from Callum Harriott and Marvin Sordell earned Colchester United a 2-0 win over Bradford City.
At the bottom, Blackpool recorded their first home win since January as goals from Mark Cullen and Brad Potts earned the Seasiders a 2-0 win over Chesterfield, while Doncaster Rovers conceded an injury-time equaliser and had to settle for a 2-2 draw with Swindon Town as a result.
Elsewhere, two goals from Joe Pigott either side of a Bradden Inman strike gave Southend United a 2-1 win at Crewe Alexandra, and Michael Higdon's opener was cancelled out by Uche Ikpeazu as Port Vale and Oldham Athletic played out a 1-1 draw.
Results in full (half-time scores in brackets): Blackpool 2-0 Chesterfield (1-0), Burton Albion 0-0 Sheffield United (0-0), Colchester United 2-0 Bradford City (2-0), Crewe Alexandra 1-2 Southend United (0-0), Doncaster Rovers 2-2 Swindon Town (0-0), Gillingham 5-1 Fleetwood Town (4-1), Peterborough United 2-3 Bury (1-1), Port Vale 1-1 Oldham Athletic (0-1), Rochdale 3-2 Shrewsbury Town (3-2), Scunthorpe United 0-1 Walsall (0-1), Wigan Athletic 2-2 Millwall (0-0)