Everton leapfrogged Birmingham at the bottom of the table, thanks to Simon Davies' first-half winner.
City goalkeeper Maik Taylor had earlier done well to tip a Tim Cahill header round the post, but he let Davies' shot bounce over him into the corner.
Birmingham responded well after the break and Neil Kilkenny hit the inside of the post with a ferocious free-kick.
Emile Heskey brought a fine save out of Nigel Martyn, and Jermaine Pennant went close - but Everton hung on to triumph.
Birmingham are still without a home win all season, and have now only picked up one point from their six games at St Andrews.
They have not taken three points in the Premiership since beating West Brom at The Hawthorns on 27 August and clearly lacked confidence here.
Despite holding Chelsea last week, Everton's form was just as poor - with manager David Moyes under as much pressure as his Birmingham counterpart Steve Bruce to turn things round.
The root of both sides' problems was apparent in the opening minutes, with little in the way of chances at either end.
A long-range Cahill shot that swerved horribly high and wide summed up the opening half-hour.
Slowly but surely though, things did improve for the visitors.
Their tactic of pumping high balls into the box almost paid off when Cahill stooped to head Tony Hibbert's cross goalwards, and was only denied by Taylor's acrobatics.
And before half-time the Toffees were ahead.
Andy Van der Meyde - making his first start for the club - broke away down the left and fed Davies who was in acres of space in the middle.
With the Birmingham defence retreating, the Welsh winger had time to pick his spot and unleashed a bouncing shot that deceived Taylor and nestled in the corner of the net.
City were booed off at the break, and Bruce clearly had plenty to think about.
His side responded well after the restart, with Heskey latching on to a Mikael Forssell flick and forcing a flying save from Martyn.
A winding run by Pennant ended in another Martyn save as the home side pushed forward.
And even when the former-England keeper was beaten the goal would not come for Bruce's side.
Kilkenny's ferocious free-kick from 25-yards somehow stayed out after smashing against the inside of Martyn's left-hand post.
Everton were still a threat on the break - James Beattie almost latching on to a poor Matthew Upson back-header, and Cahill seeing his shot loop on to the roof of the net.
But for the most part it was all Birmingham, with only their lack of cutting edge holding them back.
Bruce sent on substitute Walter Pandiani to bolster his attack but he could not conjure up an equaliser, and the defeat means they are now second-bottom of the Premiership.
Everton manager David Moyes:
"It was an important win. We needed it, and it was a good performance from the lads. They did the job and got us the three points.
"We got our goal, and played well. Although we had to hang on at times you have to expect to come under pressure because Birmingham are a good side.
"If we had got another goal it would have made it safe and we made another two or three chances we did not take."
Birmingham manager Steve Bruce:
"It's an immense disappointment for us to be beaten and it's a bad, bad day for us.
"The game was won and lost on an individual mistake by our keeper and you can't do that in games like these.
"We all knew the importance of this game and had talked about it in the week leading up to the match and we now need to get a bit of luck on our side."
Birmingham: Maik Taylor, Martin Taylor, Cunningham (Pandiani 73), Upson, Clapham, Pennant, Jarosik, Butt (Kilkenny 34), Johnson, Forssell, Heskey.
Subs Not Used: Vaesen, Tebily, Painter.
Everton: Martyn, Hibbert, Yobo, Weir, Neville, Davies, Arteta, Cahill, Van der Meyde (Kilbane 70), Beattie (Osman 82), Ferguson.
Subs Not Used: Wright, Kroldrup, McFadden.
Goals: Davies 43.
Ref: R Styles (Hampshire).