Sunderland snatched a place in the Sky Bet Championship play-offs at Millwall’s expense in a dramatic final round of regular games, while Coventry also secured a top-six finish.
Tony Mowbray’s Black Cats took sixth spot following a 3-0 win at Preston, where Amad Diallo, Alex Pritchard and Jack Clarke netted after the break.
Millwall had started the day in that position and looked set to seal a play-off berth at half-time against Blackburn, leading 3-1 with Duncan Watmore having scored a brace either side of Adam Wharton’s reply before Oliver Burke added a third for Gary Rowett’s men.
But things turned around in remarkable fashion in the second half as a goal from Joe Rankin-Costello and two from Ben Brereton Diaz secured a 4-3 victory for Rovers.
It left Millwall in eighth place, with Blackburn coming seventh as their own top-six hopes came to an end as they just missed out to Sunderland.
Coventry, meanwhile, claimed the point they needed with a 1-1 draw at fourth-placed Middlesbrough, who had already secured their spot in the play-offs.
Gustavo Hamer put Mark Robins’ Sky Blues ahead before Cameron Archer equalised in first-half stoppage time.
Albion had led twice, with efforts from Okay Yokuslu and Semi Ajayi being cancelled out by Luke Cundle and Olivier Ntcham.
Luton, already confirmed as finishing third, drew 0-0 at home against Hull and will now face Sunderland in the play-off semi-finals, while Middlesbrough take on Coventry.
Champions Burnley beat Cardiff 3-0 at Turf Moor, Josh Brownhill, Ashley Barnes and Scott Twine getting on the scoresheet as Vincent Kompany’s men finished with 101 points, while second-placed Sheffield United – also with automatic promotion already achieved – won 2-1 at Birmingham.
Oliver McBurnie and James McAtee scored in quick succession for the Blades early in the second half, with Dion Sanderson pulling a goal back for the hosts.
Among the three relegated teams, Blackpool finished on the most positive note as Morgan Rogers’ early goal earned them a 1-0 win at Norwich.
Bottom side Wigan drew 0-0 at home with Rotherham, while 22nd-placed Reading lost 2-0 at Huddersfield, where Josh Koroma and Joseph Hungbo got the goals.
Elsewhere, Watford beat Stoke 2-0 at Vicarage Road, Imran Louza and Keinan Davis netting, and it was the same scoreline as Bristol City triumphed at QPR, with Mark Sykes and Sam Bell on target.