Match ends, Bolton Wanderers 0, Birmingham City 1.
Birmingham finish the season 10th in the Championship after beating Bolton in the last match of their campaign.
Robert Tesche volleyed in the only goal after Bolton goalkeeper Adam Bogdan had blocked the ball on the goal-line from Demarai Gray's inswinging corner.
Bolton had chances to score but Emile Heskey headed wide and Eidur Gudjohnsen had a goal ruled out for offside.
Wanderers, who end the season with only one victory from their final nine matches, finish 18th in the table.
It was a disappointing end for Neil Lennon's side, who finish only 10 points above the Championship relegation zone.
The hosts made a bright start with Gudjohnsen's powerful free-kick blocked, before Heskey shot just over the crossbar.
However, Birmingham took the lead just before half-time when Tesche finished from close range after Bolton had failed to clear the danger.
Gray had a chance to double the visitors' lead but curled an effort just off target, although Adam le Fondre could have earned Bolton a point but headed wide from six yards out.
Bolton manager Neil Lennon: "Maybe it was symptomatic of our season - we showed a bit of promise but in the end fizzled out.
"We have a mountain of work to do in terms of where we want to take the club. We have known that all along.
"It was important to get over the line in terms of staying up. We looked okay in November and December, but the volumes of injuries after that hit us really hard."
Birmingham manager Gary Rowett: "The players have got to be given great credit for the way they moved the ball and looked a very controlled team.
"The game suited us - Bolton tried to play through us because they have good technical players in the middle of the park.
"It was about blocking up that area, breaking wide and counter-attacking. With a bit more composure and better timing in the final third, we could have scored one or two more with our breakaways."
- 29BannanBooked at 15mins
- 18DannsSubstituted forWalkerat 59'minutes
- 16DaviesBooked at 45minsSubstituted forJankoat 76'minutesBooked at 82mins
- 22GudjohnsenSubstituted forFeeneyat 69'minutes
- 9Le FondreBooked at 84mins
- 20Costa Rocha
- 13TescheBooked at 90mins
- 36FabbriniSubstituted forDavisat 63'minutes
- 9DonaldsonSubstituted forThomasat 67'minutes
- Mark Brown
- Shots on Target
Second Half ends, Bolton Wanderers 0, Birmingham City 1.
Robert Tesche (Birmingham City) is shown the yellow card for a bad foul.
Saidy Janko (Bolton Wanderers) wins a free kick in the defensive half.
Foul by Robert Tesche (Birmingham City).
Attempt blocked. Stephen Gleeson (Birmingham City) right footed shot from outside the box is blocked. Assisted by Lloyd Dyer.
Tim Ream (Bolton Wanderers) wins a free kick in the defensive half.
Foul by Wes Thomas (Birmingham City).
Foul by Emile Heskey (Bolton Wanderers).
Stephen Gleeson (Birmingham City) wins a free kick in the defensive half.
Adam Le Fondre (Bolton Wanderers) is shown the yellow card for a bad foul.
Foul by Adam Le Fondre (Bolton Wanderers).
Paul Caddis (Birmingham City) wins a free kick in the attacking half.
Saidy Janko (Bolton Wanderers) is shown the yellow card for a bad foul.
Foul by Saidy Janko (Bolton Wanderers).
Wes Thomas (Birmingham City) wins a free kick on the left wing.
Offside, Birmingham City. Paul Caddis tries a through ball, but Robert Tesche is caught offside.
Attempt missed. Emile Heskey (Bolton Wanderers) header from the centre of the box is close, but misses to the left. Assisted by Tom Walker with a cross.
Substitution, Bolton Wanderers. Saidy Janko replaces Mark Davies.
Offside, Bolton Wanderers. Mark Davies tries a through ball, but Adam Le Fondre is caught offside.