An emotional Jude Bellingham signed off his Birmingham career as the Blues' Sky Bet Championship status was secured despite a 3-1 loss against Derby at St. Andrew's.
Midfielder Bellingham, 17 – who has signed a five-year contract with Borussia Dortmund – missed three first-half chances before departing to what appeared to be cramp in the 75th minute, seemingly in tears.
It was the third time in the last six seasons that Blues had stayed up on the last day, after escaping relegation from the Championship with 1-0 wins at Bristol City in 2016-17 and Bolton in 2014-15.
Birmingham made the worst possible start after conceding from Derby's opening chance, after just six minutes.
Bellingham seemed determined to sign off with a goal and he went close three times in the first half.
Then he went close twice within a matter of seconds just after the half hour, poking wide from close range then heading against the bar.
The Blues had a major let-off in the seventh minute of time added on before half-time.
Martyn Waghorn's chip dropped over the bar with only Camp to beat when the visitors broke swiftly on a Birmingham corner.
Rooney was at fault with the error that led to Birmingham's equaliser in the 56th minute.
The Derby captain made a hash of a clearance after unconvincing headers from Roberts then Curtis Davies following a corner and Ivan Sunjic thumped home a deflected left-foot drive from 15 yards.
Whittaker's first goal came as he stooped to head home beyond Roberts on the line after Birmingham failed to clear a free kick.
Sibley, the substitute, gave the scoreline a rather flattering look in Derby's favour when he thundered home a rising angled shot from the edge of the box in the second minute of time added on.