Aston Villa skipper Gareth Barry converted a controversial penalty to cap a second-half fightback and keep Martin O'Neill's side ahead of Everton in the battle for a European spot.
Villa trailed 2-0 and then 3-1 but refused to buckle and Barry earned them a share of the spoils after Joleon Lescott caught Stiliyan Petrov in the face with his boot when attempting to clear.
Marouane Fellaini and Tim Cahill put Everton in control and, after John Carew had reduced the arrears, Steven Pienaar put the Toffees back in command before James Milner and Barry rescued a point for Villa.
But the result did little for the chances of either side in their attempts to overhaul fourth-placed Arsenal.
Villa have now gone 10 games without a win in all competitions and Everton are still without an away league victory in 2009.
Everton played the better football for long periods with Leon Osman and skipper Phil Neville, in the 400th league appearance of his career, excellent in the centre of the park.
The Villa defence also looked at sixes and sevens and struggled to contain the threat of Fellaini, Jo and Cahill.
But the Everton rearguard were also severely tested in coping with Carew via the stream of high balls into their penalty box.
And Ashley Young was a constant source of danger with his trickery which earned him a series of free-kicks.
Villa did most of the early pressing and Tim Howard gathered a dipping centre from Milner after he had escaped the attention of Leighton Baines on the right flank.
But Brad Friedel had to be alert to tip over a rising fierce half-volley from Neville after a corner from Baines had only been half cleared.
Then after 20 minutes the Villa goalkeeper was powerless to stop Fellaini putting Everton ahead with his eighth goal of the campaign.
Jo was involved in the build-up before finding Baines and his low cross was tapped in at close range by Fellaini.
Villa looked shell-shocked by this setback and a low shot from Pienaar curled only a couple of feet away.
In a rare Villa reply, Milner stung the hands of Howard with a long range drive although it was straight at the Everton keeper.
David Moyes' side were soon back on the offensive and Friedel parried an effort from Cahill after being found in space by Jo.
But after 22 minutes, Cahill grabbed his ninth goal of the season to double Everton's lead.
Cahill thumped his header against the crossbar from a Pienaar corner and he was first to react to the rebound and headed past Friedel.
Villa tried to retaliate and Hibbert became the first player to be yellow-carded after 28 minutes for a touchline challenge on Agbonlahor.
The home side looked all over the place every time Everton ventured forward and Friedel saved bravely at the feet of Cahill.
But after 32 minutes Carew gave Villa a lifeline with his 13th goal of the campaign.
Milner's centre was deflected back across goal by Barry and then Agbonlahor also got a touch on the ball before Carew made no mistake from close range.
Everton still looked dangerous and Curtis Davies blocked a shot from Jo after Cahill had allowed the ball to run across the box into his path.
Hopes of a Villa revival suffered a setback after 53 minutes when a superb strike from Pienaar restored Everton's two-goal advantage.
Neville played the ball into Pienaar's feet and he turned past Luke Young and curled a 20-yard drive past Friedel into the corner of the net.
Villa boss O'Neill was forced into an immediate change when Agbonlahor limped out of the action to be replaced by Nathan Delfouneso.
And after 55 minutes, Milner brought Villa back into the game with a deadly piece of finishing. Lescott fouled Carew 20 yards out and Milner curled his free-kick past Howard and just inside the post.
Two minutes later the harsh penalty award allowed Barry to bring Villa back on level terms.
Lescott caught Stiliyan Petrov in the face trying to clear the ball but referee Webb pointed to the spot and Barry hammered the ball high and wide of Howard.
Young curled a low drive just wide after good play by Carew and in injury-time Howard denied Delfouneso.