Doncaster Rovers beat Brentford 1-0 at Griffin Park in a top-of-the-table clash in League One.
Marcelo Trotter hit the bar with a penalty in added time, which allowed Doncaster to score the winner from the resulting break.
The result means that Doncaster are champions of League One and will return to the Championship, while Brentford have to settle for a playoff place.
Bournemouth's 0-0 draw away at Tranmere Rovers allowed Doncaster to leapfrog them and take top spot in the third tier.
Colchester beat Carlisle 2-0 to stay in League One and condemn Scunthorpe to relegation after eight successive years in the third tier.
Scunthorpe came from behind to beat Swindon Town 3-1, but the win wasn't enough to save them from relegation.
Oldham Athletic drew 1-1 away to Leyton Orient to ensure their safety.
Elswhere, Shrewsbury comfortably beat Portsmouth 3-0, with goals coming from Connor Goldson, Joe Jacobson and Akwasi Asante.
Results in full: Brentford 0-1 Doncaster, Bury 3-2 Yeovil, Carlisle 0-2 Colchester, Crawley 2-2 Hartlepool, Crewe 2-0 Walsall, Leyton Orient 1-1 Oldham, Notts County 2-2 Coventry City, Scunthorpe 3-1 Swindon Town, Sheffield United 0-0 Preston North End, Stevenage 0-2 MK Dons, Tranmere Rovers 0-0 Bournemouth