Match ends, Preston North End 1, Birmingham City 1.
Birmingham moved up to eighth despite a fifth successive Championship game without a win in a draw at Preston.
Adam Reach gave the hosts a fortunate lead when his cross from the right went past everyone and bounced into Tomasz Kuszczak's net.
Blues levelled with Michael Morrison's header from Stephen Gleeson's corner, with Marnick Vermijl clearing from just behind the line.
Demarai Gray should have won it for City but dragged his shot wide.
Preston, who remain 16th, had kept eight clean sheets in their previous 10 games and were hopeful of extending that run until midway through the second half.
Keeper Jordan Pickford had been the hero for Preston, with several good saves from Gray, Jon Toral, James Vaughan and Morrison.
But he was unable to stop Morrison's goal after misjudging the corner, or Jacques Maghoma's close-range header which hit the crossbar.
And Blues were again frustrated in injury-time when teenager Gray raced away from the Preston defence but put his effort wide.
Preston boss Simon Grayson: "Jordan was the first to apologise for the goal because he's come for it and missed it completely.
"We forgive him for that because he kept us in the game anyway. It shows he's got high standards for himself.
"The lad's got a bright future wherever he's going to be. We're just happy to have him and help with his development."
Birmingham manager Gary Rowett:
"We conceded a very poor goal which we should have dealt with much better, but our goalkeeper has maybe made one save.
"We have had five one-on-ones, hit the bar, hit the post and their keeper has made three or four unbelievable saves.
"For the home keeper to get the man-of-the-match award tells you we should have won comfortably. We should have won tonight and a couple more games with those chances."
- 3CunninghamBooked at 81mins
- 12GallagherBooked at 51minsSubstituted forWelshat 70'minutes
- 16BrowneSubstituted forKilkennyat 83'minutes
- 9KeaneSubstituted forHugillat 70'minutes
- 2EardleyBooked at 66mins
- 6KieftenbeldBooked at 83mins
- 19MaghomaSubstituted forDavisat 89'minutes
- 22ShinnieSubstituted forToralat 45'minutes
- 15VaughanBooked at 81minsSubstituted forHalfordat 88'minutes
- Kevin Wright
- Shots on Target
Second Half ends, Preston North End 1, Birmingham City 1.
Attempt missed. Daniel Johnson (Preston North End) left footed shot from the left side of the box is high and wide to the left. Assisted by Joe Garner.
Foul by Jordan Hugill (Preston North End).
Michael Morrison (Birmingham City) wins a free kick in the defensive half.
Attempt missed. Demarai Gray (Birmingham City) left footed shot from the left side of the box misses to the right. Assisted by Jon-Miquel Toral with a through ball following a fast break.
Attempt missed. Jon-Miquel Toral (Birmingham City) right footed shot from outside the box is close, but misses to the left. Assisted by Jonathan Grounds.
Offside, Birmingham City. Tomasz Kuszczak tries a through ball, but Greg Halford is caught offside.
Tom Clarke (Preston North End) wins a free kick in the defensive half.
Foul by Greg Halford (Birmingham City).
Foul by Neil Kilkenny (Preston North End).
Jon-Miquel Toral (Birmingham City) wins a free kick on the right wing.
Substitution, Birmingham City. David Davis replaces Jacques Maghoma.
Substitution, Birmingham City. Greg Halford replaces James Vaughan.
Joe Garner (Preston North End) wins a free kick in the attacking half.
Foul by Michael Morrison (Birmingham City).
Substitution, Preston North End. Neil Kilkenny replaces Alan Browne.
Maikel Kieftenbeld (Birmingham City) is shown the yellow card for a bad foul.
Daniel Johnson (Preston North End) wins a free kick in the attacking half.
Foul by Maikel Kieftenbeld (Birmingham City).