Aymeric Laporte and Gabriel Jesus scored in added-on time at the end of the first and second halves, and the result takes Pep Guardiola's side ahead of Liverpool - who have played a game fewer - on goal difference.
Everton gave a good account of themselves and, although the positives will be taken from pushing their in-form opponents, the Toffees remain in ninth position in the standings.
Man City wasted little time in going on the front foot, and Leroy Sane came within inches of opening the scoring as early as the third minute with a 20-yard volley which whistled wide of the far post.
The visitors were keeping Everton pegged back in their own defensive third, and a goal should have arrived when Laporte somehow headed wide of the post from six yards out after meeting an inswinging corner.
Chances at either end dried up before the half-time whistle, but in the second minute of added-on time Laporte put City into the lead by sending a header into the far corner of Jordan Pickford's net after meeting David Silva's free kick.
City took their time in rediscovering their rhythm from the first half, but Sergio Aguero should have doubled his side's advantage just before the hour with an overhead kick that somehow went wide from close range.
Raheem Sterling was the next player to try his luck shortly after his introduction, but the substitute watched his curling effort go marginally over the top corner after taking a slight deflection off Jonjoe Kenny.
Everton battled on gamely until the end of the match, and the home supporters would have been left encouraged when seven minutes of added-on time were signalled by the fourth official.
However, Marco Silva's side failed to create an opportunity during the closing stages and were made to pay in the final seconds as Jesus latched on to a through-ball from Kevin De Bruyne before heading into the net after his initial shot had been saved by Pickford.
EVERTON (4-3-3): Pickford; Kenny, Zouma, Keane, Digne; Gueye, Davies, Gomes (Sigurdsson 63'); Walcott (Tosun 80'), Bernard (Richarlison 73'), Calvert-Lewin
MANCHESTER CITY (4-2-3-1): Ederson; Walker, Stones, Otamendi, Laporte; Fernandinho, Gundogan; Bernardo Silva, David Silva (De Bruyne 89'), Sane (Sterling 59'); Aguero (Gabriel Jesus 80')