The start of Robbie Fowler's second Anfield spell ended on a sour note as 10-man Birmingham scored late on.
Birmingham played most of the game with 10 men after Johnson's dismissal
Birmingham were a man down for 63 minutes after Damien Johnson was sent off for a high tackle on Daniel Agger.
Liverpool went ahead just past the hour when Steven Gerrard began and started a move that finished with his shot deflecting past Maik Taylor.
Fowler then came on for Liverpool, but his homecoming was spoilt in the 88th minute by a Xabi Alonso own goal.
Agger had an eventful game on his Liverpool debut.
Comfortable on the ball he advanced half the length of the pitch only for his shot to be blocked on the edge of the penalty area.
But his languid style let him down badly when he tried to clear the ball too casually.
Heskey profited, quickly passing to Chris Sutton, whose shot was too close to Jose Reina.
Agger was involved in Johnson's dismissal, the Birmingham midfielder red-carded for a dangerous tackle on the Danish international defender.
Five minutes after Johnson's sending off Birmingham's midfield was further weakened when David Dunn, their best player up to that point, limped off to be replaced by Stan Lazaridis.
Folwer came on immediately after Gerrard's goal
Dunn's ability to beat his man had troubled Liverpool and he had gone close with a disguised chip.
When Fowler had warmed up before the start the match the Anfield tannoy had blasted out the Hallelujah chorus from Handel's Messiah - a reference to the striker's "God" monicker.
But with Fowler watching from the bench, Liverpool found it hard to strike up a consistent rhythm.
The closest Liverpool came to scoring in the first half was Gerrard's rising free-kick that was fractionally too high.
Taylor's goal came under sustained pressure in the opening minutes of the second half.
Peter Crouch, Agger and Fernando Morientes all went close with headers, while Mario Melchiot in trying to clear a Gerrard cross headed the ball against his own bar.
Liverpool finally went ahead on 62 minutes when Gerrard's low shot took a deflection off Martin Latka - making his debut for Birmingham - into the corner of the net.
And as the Liverpool fans celebrated the noise levels at Anfield increased a decibel or two as Fowler replaced Crouch.
Despite a lack of possession Birmingham sought to get forward whenever they could and Heskey went desperately close with a header that drew a fine save from Reina.
And with two minutes to go Birmingham drew level when Alonso chested the ball past his goalkeeper after Sutton had headed the ball down.
As the game entered stoppage time Alonso almost made up for his error when his free-kick drew a brilliant save from Taylor.
Fowler nearly had the last word, scoring with an overhead kick, but he was clearly offside.
Liverpool manager Rafael Benitez:
"When you have a lot of opportunities you need to score.
"If you score a second goal then the other team has to go forward and there is more space.
"It would have been fantastic if Robbie Fowler could have scored. But if the team gets forward he will score goals in the future."
Birmingham manager Steve Bruce:
"It was a case of two committed players going for the ball.
"To send him off and not give him the benefit of doubt was a poor decision. It changed the game's shape because until then we had been the better team.
"But we rolled up their sleeves and had a go. In the circumstances it was the best point we've won this season."
Liverpool: Reina, Finnan, Hyypia, Agger, Riise, Luis Garcia, Gerrard (Alonso 72), Hamann, Kewell, Crouch (Fowler 63), Morientes.
Subs Not Used: Carson, Carragher, Warnock.
Goals: Gerrard 62.
Birmingham: Maik Taylor, Melchiot, Latka, Upson, Gray, Pennant, Kilkenny (Tebily 64), Johnson, Dunn (Lazaridis 34), Heskey, Sutton, Lazaridis (Bruce 90).
Subs Not Used: Vaesen, Forssell.
Sent Off: Johnson (28).
Goals: Alonso 88 og.
Ref: U Rennie (S Yorkshire).