Sebastian Larsson made it 21 points from the last 27 available for Birmingham after Russian midfielder Diniyar Bilyaletdinov had given Everton a fifth minute lead.
Burnley v Everton previewLarsson's equaliser was enough to take Birmingham above Liverpool in the table, McLeish's side up to seventh spot and unbeaten in nine games ahead of Chelsea's visit to St Andrew's on Boxing Day. It is a far cry from 12 months ago when McLeish endured an uncomfortable Christmas after back-to-back defeats to Preston and Reading in the Championship.
Everton will feel aggrieved they did not take all three points. Having taken the lead through Bilyaletdinov, who relished the freezing conditions, Louis Saha throught he had doubled the lead only for to have his celebrations curtailed by an off side flag, television replays showing the match officials got it wrong.
It was all Everton in the opening 20 minutes. Tim Cahill narrowly missed the target from an accute angle while Leon Osman had a goal-bound effort blocked by the impressive Roger Johnson. But David Moyes's side were left stunned by a goal from out of the blue.
After being bombarded, Birmingham levelled from their first serious attack through Larsson, the Swede picking his spot with a right-foot finish following good work by Christian Benitez. Birmingham's season is still about consolidation - and a mid-table finish must be regarded as huge success - but what a platform for progress McLeish has built.
Having been denied victory on their last visit to Merseyside by David Ngog's dive, which allowed Liverpool to salavage a point they hardly deserved, McLeish's side seemed happy to soak up whatever Everton could throw at them.
Yet they still looked dangerous on the counter attack. Tony Hibbert produced a last-ditch challenge to deny Cameron Jerome a glorious 42nd minute chance after Larsson's ball had carved open the Everton defence.
But on a frustrating afternoon for the hosts, Johnson again came to Birmingham's rescue after he denied Cahill when the Australian international looked certain to score.
EVERTON: Howard; Hibbert, Heitinga, Neill, Baines; Pienaar, Osman (Vaughan 90), Cahill, Bilyaletdinov (Yakubu 70); Fellaini; Saha. Subs: Nash, Coleman, Duffy, Agard, Baxter.
BIRMINGHAM: Hart; Carr, R Johnson, Dann, Ridgewell; Larsson, Ferguson, Bowyer, McFadden (Phillips 69); Jerome, Benitez (Vignal 82). Subs: Taylor, Fahey, McSheffrey, D Johnson, Carsley.