Ten-man Everton denied Manchester City the chance to top the league table at Christmas for the first time since 1929 as they held on to win at Eastlands.
Tim Cahill headed home the opener after four minutes before setting up Leighton Baines to curl in Everton's second.
Everton lost Victor Anichebe to a second booking on the hour and City pulled a goal back when Yaya Toure's shot deflected in off Phil Jagielka.
City were also reduced to 10 men when Kolo Toure was sent off in injury time.
Everton arrived in Manchester without a win in the league in seven games, but with a fine record of three consecutive league victories at the City of Manchester Stadium.
In contrast, City had not lost in seven league matches and were looking to overtake league leaders Manchester United, who have played two games fewer owing to the postponement of ties with Blackpool and Chelsea in December.
That fine run of form belied the internal upheaval that had surrounded the club since captain Carlos Tevez controversially slapped a transfer request on to manager Roberto Mancini's desk.
The striker missed City's midweek 1-1 Europa League draw with Juventus and it looked as though the want-away controversy would rumble on into tonight's tie with Everton.
But so-called "clear the air" talks on Monday afternoon saw 26-year-old Tevez formally withdraw his request and Mancini rewarded the Argentine with a place in the starting line-up and the captain's armband.
As kick-off approached, it looked for all the world as if the skipper's turnaround would give the Blues the platform from which to launch their bid to overtake bitter rivals Manchester United at the top of the table.
After all, having yet to lose a league game in which he had scored, Tevez had become an inspirational lucky charm for Mancini's side.
But when it comes to Eastlands, Everton boss David Moyes had his own lucky charm in the form of leading scorer Cahill.
The Australian had scored two goals at City's ground in the past two seasons and he extended that record with just four minutes gone.
Sole striker Anichebe played his part, flicking Baines' pass into the path of Seamus Coleman before Cahill promptly headed the Irishman's incisive cross beyond Joe Hart.
It was the 31-year-old Cahill's third goal in as many seasons at Eastlands and it was a dream start for the visitors, whose poor run of form had seen them skirt around the relegation zone for much of the season.
Eager to put some distance between themselves and the bottom of the table, Everton pressed for a second and while defender Pablo Zabaleta was off the pitch with a head injury, Anichebe and Cahill combined again to create a second goal on 19 minutes.
Anichebe, in only his third league game this season, set off on a storming run down the left, crossing to Cahill who laid the ball neatly off to defender Baines who curled a shot beyond Hart.
A stitched-up Zabaleta returned to the pitch minutes later and the Argentine quickly attempted to right the tie, crossing unmarked into the box to his fellow countryman Tevez, whose shot went behind for a corner.
City upped the pressure and absolutely peppered the Everton goal with shots for a short spell after the half hour, but the Toffees somehow kept out David Silva, Vincent Kompany and Mario Balotelli.
Temperatures were dipping in the ground but City were anxious to put the heat on Everton's defence and Aleksander Kolorav almost beat Tim Howard but the Serbian's free-kick was narrowly deflected wide.
Zabaleta, despite the heavy strapping to his head, was proving to be City's best player as the half-time whistle approached, that plaudit definitely not falling to club captain Tevez, who was off the pace.
Mancini added Adam Johnson into the mix after the break, bringing off James Milner, and the England player offered greater width on the right.
This page is best viewed in an up-to-date web browser with style sheets (CSS) enabled. While you will be able to view the content of this page in your current browser, you will not be able to get the full visual experience. Please consider upgrading your browser software or enabling style sheets (CSS) if you are able to do so.