It looked like it was game over when Palace goal machine Glenn Murray made it 20 goals for the season as he completed his double to make it 2-0 on the hour mark at St Andrew's.
But substitute Nikola Zigic and Papa Bouba Diop levelled things up to ensure Lee Clark's men claimed a share of the spoils.
It was the hosts who showed first intent, Chris Burke's 18-yard effort bringing Palace goalkeeper Julian Speroni into action after eight minutes.
Paul Robinson then tried his luck but his effort cleared the bar as the Blues dictated things at the start.
Clark's men had made all the early running but their enthusiastic approach cost them after 29 minutes when Burke was booked for bringing down Andre Moritz.
Burke then tried to break the deadlock with a speculative shot from distance which sailed wide of the target as the hosts continued to dominate proceedings.
But having weathered the storm for most of the first half, it was Palace who took the lead just six minutes before the break when Yannick Bolasie's break from the right gave Murray an easy tap-in.
It was typical smash-and-grab stuff and Ian Holloway will have been delighted with the scoreline - if not his side's below-par performance - at the break.
City picked up where they had left off after the interval, with Burke again testing Speroni from distance as Clark's men kept up their considerable efforts.
At the other end, Palace's Kagisho Dikgacoi went close following an Owen Garvan corner.
Elliott was replaced by Robert Hall within 10 minutes of the restart as Clark signalled a change - and hopefully a change of luck - in front of goal.
But it wasn't to be as Murray grabbed his second of the afternoon for Palace on the hour, stabbing home from close range after good work from Jonathan Parr.
Zigic replaced Burke with 25 minutes to go and within a minute, the striker had grabbed a goal back for the hosts, heading home King's cross.
And it was 2-2 with eight minutes left when Diop headed home Hall's cross.