Promotion, relegation and a place in the play-offs were all decided in a gripping final day of the Sky Bet Championship season.

Cardiff took the final automatic promotion spot, leaving Fulham in the play-offs again, while Derby secured sixth to end the post-season hopes of Preston and Millwall.

At the bottom, Burton and Barnsley joined Sunderland in the third tier next season, with Birmingham, Reading and Bolton surviving.

Here’s how the dramatic day unfolded.

12.30pm

All 12 games kicked off under blazing sunshine around the country, with six of the fixtures involving teams who still had something to play for. In one of the other matches, relegated Sunderland gave champions Wolves a guard of honour at the Stadium of Light.

12.35pm

Fulham missed a glorious chance to go 1-0 up as Aleksandar Mitrovic blazed over at the back post from Matt Targett’s cross. At Pride Park, Barnsley goalkeeper Jack Walton made a fine stop from Marcus Olsson’s long-range effort as Derby pushed for an opener.

12.44pm

Derby County Cameron Jerome scores for DerbyBarnsley – Sky Bet Championship – Pride Park
Cameron Jerome scores for Derby (Mike Egerton/Empics)

Cameron Jerome scored the opening goal for Derby, who moved closer to a play-off spot. Barnsley dropped below Burton and into the relegation zone.

12.46pm

Lukas Jutkiewicz celebrates a big goal for both Birmingham and Cardiff
Lukas Jutkiewicz celebrates a big goal for both Birmingham and Cardiff (Nigel French/PA)

A big goal at both ends of the table was celebrated in Birmingham and Cardiff. Lukas Jutkiewicz turned in Wes Harding’s cross to give Birmingham a 1-0 lead against Fulham, leaving Blues heading for safety and the visitors with it all to do to secure automatic promotion.

12.57pm

Callum Robinson scores the opener for Preston
Callum Robinson scores the opener for Preston (Dave Howarth/Empics)

Burton dropped back into the relegation zone as Callum Robinson headed in an opener for play-off chasing Preston. The Lilywhites still needed Barnsley to do them a favour at Derby, though.

1.01pm
Shaun Williams’ penalty gave Millwall a 1-0 lead against Aston Villa – but they needed Preston to fail to win and Derby to lose, as well as making up a nine-goal deficit on the Rams, to make the top six.

1.06pm
Preston’s Billy Bodin put the ball into the back of the net, but the goal was disallowed for handball and he was given a yellow card.

1.14pm

Harlee Dean celebrates Birmingham's second
Harlee Dean celebrates Birmingham’s second (Chris Radburn/Empics)

Cardiff were on the brink of the Premier League after Birmingham scored a second against Fulham. Diogo Jota did brilliantly down the left and crossed to a completely unmarked Harlee Dean, who headed in his first goal for the club.

1.20pm

As all the games reached half-time, Cardiff were on course for the Premier League, with Fulham heading for the play-offs, where they would meet Derby. At the bottom, Bolton and Burton were going down, though a goal for either side would have moved them out of the bottom three.

1.39pm

Burton received a lifeline as Bodin was sent off for Preston. After being booked for a handball, he earned a second for diving in the penalty area.

1.44pm
Derby all-but wrapped up a play-off place as they scored a second, Jerome crossing from the right for Matej Vydra to finish. The Rams moved up to fifth ahead of Middlesbrough. Barnsley remained fourth from bottom but their safety now depended on Bolton and Burton’s results.

1.51pm

Burton moved above Barnsley and out of the bottom three as Hope Akpan’s brilliant strike made it 1-1 against 10-man Preston.

1.57pm
Burton dropped right back in the relegation zone as Bolton finally took the lead against Nottingham Forest through Adam le Fondre. Burton, who needed to score again to climb back out of the bottom three, were denied a second as Marvin Sordell’s header was well saved by Declan Rudd. Barnsley slipped 3-0 behind to Derby, who dropped back down to sixth as Middlesbrough equalised at Ipswich.

2pm
Another twist as Forest levelled at Bolton through Ben Osborn, moving Burton back out of the drop zone. Derby added a fourth against Barnsley.

2.09pm

More good news for Burton as Jack Colback put Forest 2-1 up at Bolton. Bolton needed two goals in the last 10 minutes to stay up, providing Burton did not score. Barnsley pulled one back at Derby, who moved back up to fifth as Ipswich retook the lead against Boro.

2.14pm
Fulham pulled a goal back at Birmingham through Tom Cairney, but needed two more to secure a top-two finish, as Cardiff and Reading remained 0-0.

2.17pm
Bolton gave themselves some hope as David Wheater equalised against Forest.

2.18pm

Aaron Wilbraham headed Bolton into the lead and moved them out of the relegation zone. Meanwhile, Che Adams made it 3-1 to Birmingham, leaving Cardiff minutes away from the Premier League.

2.21pm
Preston went 2-1 up against Burton in stoppage time. Bolton had five minutes of added time to see out, but a Forest equaliser would have seen Barnsley stay up.

2.22pm

The full-time whistle went at Pride Park, with Barnsley heading for relegation and Derby finishing fifth.

2.24pm
Burton were relegated as their game with Preston ended in a 2-1 defeat. At Bolton, Forest’s Apostolos Vellios fired just over the crossbar with an acrobatic effort. Patrick Bamford scored for Middlesbrough to secure fifth and a play-off with Aston Villa, leaving Derby to play Fulham.

2.26pm

Bolton celebrated safety as the final whistle went after a dramatic 3-2 win against Forest.

2.27pm

Cardiff were promoted to the Premier League as they drew 0-0 with Reading as Birmingham beat Fulham 3-1. Wolves, meanwhile, crashed to a 3-0 defeat at Sunderland, leaving the relegated Black Cats as the only side the champions did not beat in the league this season.