Swansea City were denied victory at Birmingham as Troy Deeney struck a last-gasp equaliser at St Andrew's.
Scott Hogan had put the Blues ahead at St Andrew’s, but Olivier Ntcham swept home his fifth goal of the season before Matt Grimes scored his first goal in 18 months to have the visitors ahead at the break.
It put Russell Martin's side on course for just a fifth-ever win at this ground and a return to the Championship play-off places.
But they were unable to see the game out as Hogan flicked on a corner and Deeney smashed home from close range.
There had been three changes for the Swans as skipper Grimes returned from suspension, while Harry Darling and Ntcham were also recalled.
After a couple of early slips in possession had allowed Hannibal Mejbri and Tahith Chong to get at the Swansea defence, the visitors began to settle and find their way through a very aggressive press from the hosts.
One lovely quick release from Ntcham had sent Joel Latibeaudiere scurrying down the right, only for the offside flag to bring the attack to an abrupt halt.
But they quickly fell behind when Emmanuel Longelo was given far too much time to pick out a cross, and Hogan arrived between static defenders to beat the advancing Steven Benda to the ball and head into the net.
Temperatures were raised when Ryan Manning and Troy Deeney tussled near the touchline and both ended up on the deck, both players were booked after a melee but the Swansea bench felt the actions of the Blues’ skipper had perhaps merited more than just a caution.
Grimes made a crucial intervention as Chong looked to double the home side’s lead after surging into the box.
Swansea responded with their first attack of real threat, Ntcham sending Manning away down the left only for the Irishman’s final ball to be well cut out by Dion Sanderson.
Ntcham was then crowded out from another Manning cross a few moments later as Swansea began to up the ante.
Manning then rattled the post after a sensational pass from Grimes had put him behind his marker, and Ntcham seized upon the rebound to bend a superb strike beyond the grasp of John Ruddy and into the far corner of the net.
Swansea were soon on the front foot again, Longelo doing well to clear Manning’s pass just yards from his goal with Joel Piroe waiting.
Piroe then produced a lovely mazy run that took him from within his own half to the edge of the Birmingham area, but his final shot was dragged off target.
But it took a magnificent save from Benda to ensure the scores stayed level, the German getting down really quickly after a Chong cross had struck a retreating Luke Cundle to send the ball heading for the bottom corner.
And the Swans took advantage by sweeping up the other end to take the lead in first-half stoppage time.
Cundle freed Latibeaudiere down the right, and his pinpoint cross was swept home right-footed by Grimes to send the visitors in with the advantage at half-time.
Juninho Bacuna had Benda scampering with a low strike early in the second half, but the ball trickled wide of the left-hand upright.
Bacuna would soon go in the book for a late challenge on Ben Cabango, shortly after Darling and Nathan Wood had been cautioned for cynical fouls on Chong and Hogan.
Those bookings brought the home crowd back into the equation and the visitors had rather surrendered the initiative they had worked so hard to gain back during the opening half.
Grimes fizzed a low effort wide just before the hour mark after excellent defensive work by Jay Fulton, with Martin soon shuffling his pack as Ollie Cooper was summoned from the bench, and Matty Sorinola was not long in following.
Swansea threatened again, Darling heading Manning’s free-kick across goal where another flick just took it away from Ntcham before a Grimes cross just had too much on it for Piroe to stretch and get a touch.
Birmingham sent more and more men forward as the game entered its final stages, Lukas Jutkiewicz brought on add to Deeney’s physicality in the area.
Darling brilliantly blocked a Jordan James effort but the resulting corner ended with Deeney volleying in unmarked at the far post to ensure the spoils were shared.
There was still a late chance for Swansea to snatch the lead back but Darling planted a header straight into Ruddy's gloves.
Swansea City: Steven Benda; Nathan Wood (Matty Sorinola 72), Harry Darling, Ben Cabango; Joel Latibeaudiere, Jay Fulton, Matt Grimes (captain), Ryan Manning; Olivier Ntcham (Michael Obafemi 83), Luke Cundle (Ollie Cooper 61); Joel Piroe.
Unused Substitutes: Andy Fisher, Jamie Paterson, Armstrong Oko-Flex, Kyle Naughton.
Birmingham City: John Ruddy, Maxime Colin (Jordan James 88), Auston Trusty, Dion Sanderson, Jordan Graham (George Hall 67), Scott Hogan, Troy Deeney (captain), Juninho Bacuna, Tahith Chong (Lukas Jutkiewicz 77), Hannibal, Emmanuel Longelo.
Unused Substitutes: Neil Etheridge, George Friend, Jobe Bellingham, Jonathan Leko.
Report: Andy Woolmer
Attendance: 15,491 (1,266 Swansea)