Sheffield United climbed to fifth with a 1-0 victory over 10-man Crewe Alexandra, while first-half goals from Jonathan Forte and Mike Jones gave Oldham Athletic a 2-1 win over Bradford City which carries them into the final playoff spot.
At the other end of the table, Walsall moved away from trouble as Tom Bradshaw's goal gave them a 1-0 victory over Chesterfield, while Yeovil Town fell to their fifth defeat in six games as an Ian Henderson brace and a strike from Jack O'Connell gave Rochdale a comfortable 3-0 win at Huish Park.
Goals from Adam Yates and Ben Williamson, as well as an own goal from Nathan Clarke, gave Port Vale a 3-0 win over Leyton Orient, who had Darius Henderson sent off after just half an hour for violent conduct.
Meanwhile, two goals from Michael Smith were not enough to give Swindon Town three points as strikes from Rhys Healey and Gavin Massey earned Colchester United a draw. Doncaster Rovers and MK Dons drew 0-0.
Results in full Barnsley 2-2 Bristol City, Coventry City 3-2 Peterborough United, Crewe Alexandra 0-1 Sheffield United, Doncaster Rovers 0-0 MK Dons, Gillingham 1-1 Crawley Town, Oldham Athletic 2-1 Bradford City, Port Vale 3-0 Leyton Orient, Preston North End 3-2 Fleetwood Town, Scunthorpe United 0-1 Notts County, Swindon Town 2-2 Colchester United, Walsall 1-0 Chesterfield, Yeovil Town 0-3 Rochdale.