Micah Richards scored with virtually the last kick of the game to earn Manchester City a point at Everton.
Andrew Johnson celebrates his goal for Everton
Andrew Johnson's sixth goal of the season after 44 minutes looked to have given Everton a deserved victory.
But Richards stole on to Bernardo Corradi's flick in the fourth minute of injury time to equalise, just after Georgios Samaras struck the woodwork.
Johnson was denied a second by a brilliant block from Richard Dunne and Nicky Weaver saved from Joleon Lescott.
But City midfield man Joey Barton may face an inquiry after angering Everton's fans after the final whistle, baring his backside to the home crowd after celebrating with his own supporters.
Johnson was easily the most dangerous attacker on view in a keenly-contested first 45 minutes.
He headed straight at Weaver from Nuno Valente's angled cross and then almost stole in on a knock-down from Lescott but ran the ball out of play.
James Beattie had struggled on his recall to the side, but had a goal ruled out eight minutes before the interval for a foul on Sylvain Distin after a neat finish on the turn.
He was then guilty of a dreadful miss two minutes before the interval when Johnson set him up in front of an open goal, but he stumbled over his finish.
There was no reprieve for City on the stroke of half-time - and it was the prolific Johnson who struck again for Everton.
Phil Neville swung in a cross from the right and Johnson met it with a crisp volley that beat Weaver via a deflection off Distin.
The goal lifted Everton's confidence and they almost stretched their lead after 51 minutes when Weaver was forced to parry Leon Osman's powerful shot to safety.
City had rarely threatened, but former Liverpool veteran Dietmar Hamann almost grabbed an equaliser with a measured finish that was just inches wide.
It needed a brilliant piece of defending from Dunne to stop Johnson getting his second goal of the afternoon after 63 minutes.
Johnson looked certain to score as he pounced on a rebound when Weaver could not hold Mikel Arteta's shot, but Dunne threw himself in front of the goalbound shot.
City almost took advantage immediately, only for Samaras to shoot wide after Everton keeper Tim Howard fumbled a cross.
Weaver then made a brilliant save from Lescott's header when he met Arteta's corner - and from another flag-kick Cahill headed wide.
Everton were forced to hang on in the closing stages, with Samaras shooting against the post from 20 yards before Richards struck in dramatic fashion.
Everton manager David Moyes:
"It was a game we should have won.
"We needed the second goal to kill them off and when we didn't get it, it gave them the opportunity to do what they did to us in the last 10 minutes.
"It was difficult to break Manchester City down, but we scored at a good time. We had other opportunities but it was just one of those days and we end up losing a goal in the last seconds."
Manchester City manager Stuart Pearce:
"I thought we stuck in the game, although I was disappointed with us in the first half.
"We didn't get the ball high enough up the pitch to service our one forward, Georgios Samaras.
"When Georgios hit the post we thought our opportunity may have gone, but we got the goal and I thought we deserved something from the game.
"I talked to the players about 'stickability' in the week and I got that from them here."
Everton: Howard, Neville, Yobo, Lescott, Nuno Valente, Osman, Carsley, Cahill, Arteta (Davies 89), Johnson (Weir 90), Beattie (Anichebe 81).
Subs Not Used: Wright, Van der Meyde.
Booked: Cahill, Nuno Valente.
Goals: Johnson 44.
Man City: Weaver, Richards, Dunne, Distin, Jordan, Sinclair, Barton, Hamann (Reyna 77), Ireland (Corradi 57), Miller (Beasley 66), Samaras.
Subs Not Used: Hart, Dickov.
Booked: Barton, Sinclair.
Goals: Richards 90.
Ref: A Marriner (W Midlands).