City looked to be cruising to routine victory in their final game of 2022 when Erling Haaland put them ahead in the first half.
But Demarai Gray equalised with a brilliant individual goal in the second half to earn Everton a point and ease some of the pressure on Frank Lampard.
The result gave Arsenal a chance to pull seven points clear at the top of the Premier League ahead of their trip to Brighton in the late kick-off on Saturday.
There was a worrying moment for City inside the opening 20 seconds when Haaland needed lengthy treatment after losing a boot in a challenge with Ben Godfrey.
That fired up Haaland and an angry Haaland was bad news for Everton.
The Norwegian striker was pumped for the rest of the first half and put City ahead with his 21st Premier League goal of the season on 24 minutes.
Good play from Kevin De Bruyne and Jack Grealish released Riyad Mahrez on the right of the penalty area and he cut the ball back for Haaland to turn the ball past Jordan Pickford and a defender on the line.
Haaland was involved in a running battle with Godfrey and he was maybe too fired up by the end of the first half when too rashly on Vitalii Mykolenko and was booked.
Everton players wanted a red card but Lampard got a response from Everton in the second half.
City looked to in control but then Gray scored a sensational goal on 64 minutes to equalise and stun the Etihad Stadium.
Ederson had been a spectator all afternoon until Gray stole the ball off Rodri, carried it down the right, cut back inside and curled it beautifully into the top corner.
City desperately pushed for a winner threw what they could at Everton during 11 minutes of stoppage time, but the visitors held on for a point.