Match ends, Birmingham City 1, Doncaster Rovers 1.
David Cotterill's superb strike ensured Doncaster claimed a point at Birmingham and ended an eight-match losing streak against the Midlands club.
Rovers, who last triumphed against Blues in 1954, looked to be heading towards defeat until substitute Cotterill rifled home from 30 yards.
Birmingham were on course for victory thanks to Lee Novak's strike.
But relinquishing the lead means they are four points above the Championship relegation zone.
A draw was no real surprise considering the visitors went into the encounter having triumphed just once away from home in eight attempts this season while the Blues had racked up just two league victories at St Andrew's.
Both sides are yet to record back-to-back league wins this term.
After a quiet start to the game, the first moment of excitement came from Novak's attempted lob from 30 yards but Rovers goalkeeper Ross Turnbull was on hand to tip over.
Turnbull was at it again just minutes later when he blocked well from Aaron McLean after the Birmingham striker had been put through by Jesse Lingard.
Novak scored his third goal since switching from Huddersfield over the summer when he was found by Mitch Hancox's deep cross just before the half-hour mark.
The visitors finally threatened through Mark Duffy, who forced Darren Randolph to tip over his strike, before the lively Novak rifled over prior to half-time.
Doncaster boss Paul Dickov introduced Cotterill just before the hour mark in a bid to spark some life into his side and Federico Macheda was sent clear but he was denied by the legs of Randolph.
The on-loan Manchester United frontman headed wide soon after before Rovers got their reward as Cotterill rifled home into the top corner from distance.
Birmingham manager Lee Clark:
"It's another point, it keeps our unbeaten run going, but I feel it's an opportunity lost.
"We put ourselves in a great position and then second half, for some reason, we didn't continue what we did in the first half.
"They started dominating the game a little bit in terms of getting at us a bit too easy, and then we give a goal away that we shouldn't do.
"It's a wonderful strike, I'm not taking anything away from that, but they had too many unforced passes leading up to it."
Doncaster manager Paul Dickov:
"We don't want to get beat in games and limp off the pitch at the end of it. If we're going to get beat, at least get beat having a good go.
"I didn't feel as though we did that well enough in the first half.
"My players know what I'm like as a manager, if they go out there and have a right good go then I'll back them all the way - win, lose or draw.
"But I keep saying to them if you do have a go and try to do the right things then you've always got a chance of getting points."
- 17ReillySubstituted forElliottat 79'minutes
- 9LingardSubstituted forShinnieat 85'minutes
- 35McLeanSubstituted forBurkeat 70'minutes
- 26CoppingerSubstituted forCotterillat 59'minutes
- 19WellensSubstituted forWoodsat 45'minutes
- 7DuffySubstituted forPaynterat 71'minutes
- 21De Val Fernandez
- Brendan Malone
- Shots on Target
Second Half ends, Birmingham City 1, Doncaster Rovers 1.
Attempt missed. Wade Elliott (Birmingham City) right footed shot from outside the box misses to the left.
Foul by Billy Paynter (Doncaster Rovers).
Paul Caddis (Birmingham City) wins a free kick in the defensive half.
Billy Paynter (Doncaster Rovers) wins a free kick on the right wing.
Foul by Dan Burn (Birmingham City).
Corner, Birmingham City. Conceded by Luke McCullough.
Substitution, Birmingham City. Andrew Shinnie replaces Jesse Lingard.
Attempt missed. Billy Paynter (Doncaster Rovers) left footed shot from outside the box is high and wide to the left. Assisted by Federico Macheda.
Foul by Enda Stevens (Doncaster Rovers).
Tom Adeyemi (Birmingham City) wins a free kick in the defensive half.
Attempt saved. Nikola Zigic (Birmingham City) header from the right side of the box is saved in the bottom right corner. Assisted by Mitch Hancox with a cross.
Attempt saved. Jesse Lingard (Birmingham City) right footed shot from the right side of the box is saved in the centre of the goal.
Dean Furman (Doncaster Rovers) wins a free kick in the attacking half.
Dangerous play by Jesse Lingard (Birmingham City).
Billy Paynter (Doncaster Rovers) wins a free kick in the defensive half.
Foul by Wade Elliott (Birmingham City).
Substitution, Birmingham City. Wade Elliott replaces Callum Reilly.
Goal! Birmingham City 1, Doncaster Rovers 1. David Cotterill (Doncaster Rovers) right footed shot from outside the box to the top left corner. Assisted by Martin Woods.