Brighton grabbed an injury-time winner to reach the playoffs and Birmingham also scored with seconds remaining to avoid relegation on a dramatic final day in the second-tier League Championship.
Brighton will compete for a place in the Premier League with Derby, Queens Park Rangers and Wigan after finishing sixth in the Championship by beating Nottingham Forest 2-1 thanks to Leonardo Ullua's goal two minutes into added time.
Reading drew 2-2 with Burnley to finish a point behind Brighton in seventh.
Three years after winning the League Cup, Birmingham faced the prospect of demotion to the third tier but Paul Caddis scored in the third minute of stoppage time to claim a 2-2 draw at Bolton and consign Doncaster to the drop. Doncaster lost 1-0 at already-promoted Leicester.