Duncan Ferguson snatched a late equaliser against Birmingham after Emile Heskey had threatened to dent Everton's bid to finish fourth in the Barclays Premiership.
Heskey, whose former club Liverpool are also in the hunt for the chance to compete in the Champions League next season, struck early on with a 25-yard drive.
But veteran striker Ferguson, who scored the winner against Manchester United in midweek, finished from close range with five minutes remaining to salvage a point.
Everton were chasing the win to at least ensure UEFA Cup qualification but looked tired after their heroic efforts against United three days ago.
Moyes sprung a surprise by including record signing James Beattie in a starting line-up, the first time the striker had been selected since his red card against Chelsea on February 12. The Toffeemen also welcomed back Alessandro Pistone following a hamstring injury.
But whereas the midweek win over United was an outstanding advert for the Premiership and Everton's approach to the game, this clash was physical and lacked quality.
The game was littered with free-kicks from the opening seconds, Tim Cahill and Mehdi Nafti needing to be pulled apart and spoken to by referee Andy D'Urso, while Lee Carsley was left in a heap by a late challenge by Lazaridis.
Any football came from Birmingham, with Jermaine Pennant a constant threat to Everton, as he switched from flank to flank and produced excellent crosses from both wings.
Pennant had a hand in Birmingham's shock fifth-minute lead. His pass into Heskey's feet 25 yards out saw the former-Liverpool man control the ball and turn to hit a low drive into the far bottom corner.
But on 14 minutes Everton should have been level. Leon Osman crossed from the right and Beattie was all on his own six yards out, but sent his header agonisingly wide of a post.
Weir then got away with a nasty, late challenge into the ankles of Heskey right in front of D'Urso, who opted to do nothing about the poor challenge.
The game became increasingly fractious and Carsley was booked for dissent after an incident that left Stan Lazaridis on the deck.
Then Osman produced another dangerous cross from the right and this time it was Cahill who arrived unmarked to head over from eight yards. Two minutes later Mario Melchiot was cautioned for bringing down Cahill, one of numerous tackles by either side that could easily have warranted cautions.
Everton's response to an indifferent first half display was to send on Ferguson in place of Carsley with Steve Watson replacing Pistone. And they were straight at Birmingham, with an Osman drive that Maik Taylor pushed around the post.
Birmingham should have made it 2-0 after Heskey found Pennant on the right, and when the cross arrived in the box, Nafti was all alone on the far post but his header bounced down and up over the bar.
Another Pennant cross was flicked on by Heskey with a diving header, only for Yobo to deflect the effort wide of the far post.
On the hour the labouring Beattie was replaced by Marcus Bent, the pressure now being mounting on Birmingham with Kenny Cunningham next to be booked, for a foul on Kevin Kilbane.
Everything Everton were doing by now was rushed and with an air of panic, illustrated when Ferguson broke away but both Bent and Kilbane wasting the eventual chances.
But Everton's pressure finally paid off on 86 minutes when Ferguson scored another priceless goal. Taylor had saved at Cahill's feet and when the ball spun across the box, Ferguson was unmarked on the far post to drive the ball home.
Teams
Everton Martyn, Hibbert, Weir, Yobo, Pistone (Watson 45),
Carsley (Ferguson 45), Osman, Arteta, Cahill, Kilbane,
Beattie (Bent 61).
Subs Not Used: Wright, McFadden.
Booked: Carsley, Watson.
Goals: Ferguson 86.
Birmingham Maik Taylor, Melchiot, Cunningham, Upson,
Lazaridis, Pennant (Martin Taylor 89), Johnson, Nafti,
Anderton (Clemence 79), Pandiani (Blake 68), Heskey.
Subs Not Used: Bennett, Morrison.
Booked: Melchiot, Cunningham, Clemence.
Goals: Heskey 5.
Att: 36,828
Ref: A D'Urso (Essex).