Liverpool had plenty of possession early on but the home side went ahead on 34 minutes.
James McFadden crossed from the right and found Mikael Forssell unmarked at the far post and he had time to bring the ball down before hammering it past Pepe Reina.
Then after 55 minutes, St Andrews erupted after a stunning free-kick from Sebastian Larsson doubled Birmingham’s lead.
McFadden was brought down by Martin Skrtel 25 yards out and Larsson’s curling effort nestled in the top corner.
Crouch pulled one back for Liverpool on 63 minutes when he hit a first-time drive from the edge of the box.
And with 14 minutes left, Benayoun’s header deflected off Raidi Jaidi and left Maik Taylor wrong-footed.