Sergio Aguero hit the crossbar early on and Aymeric Laporte sent a header just wide as the visitors probed for the breakthrough that came on the stroke of half-time.
Laporte climbed highest to head David Silva’s free-kick into the top corner.
Aguero, Silva and substitute Raheem Sterling all threatened after the break but the match was settled in the dying moments.
Substitute Gabriel Jesus was put through by Kevin De Bruyne and scored at the second attempt after his first effort had been blocked by Jordan Pickford.
City lead the table for the first time since 15 December thanks to a superior goal difference of +48 to Liverpool's +41, but have played one match more.
Everton stay ninth on 33 points.
Everton: 9 Feb v Watford (A)
Man City: 10 Feb v Chelsea (H)