Tranmere recorded just their second defeat of the season courtesy of a 90th-minute winner from Doncaster's Iain Hume.
At the opposite end of the table, Bury move off the bottom of League One with a 2-1 win over Hartlepool, who replace the Shakers of the foot of the table.
Nicky Wroe scored a hat-trick in 36 minutes to give Preston a quick lead at Scunthorpe. The home side pulled it back to 2-3 but couldn't find the equaliser.
Brentford and Crewe secured 2-1 home victories over Coventry and Swindon respectively.
Three second-half goals gave Carlisle a comfortable victory over Oldham, Jose Baxter scoring a late consolation penalty for the visitors.
Colchester move into the top half of the table with a 2-0 win at Leyton Orient.
Shrewsbury remain outside the relegation zone despite slipping to a 3-1 defeat to Yeovil Town.