The champions were not at their fluid best but were denied an early Phil Foden goal by VAR and created a number of other chances. Jesus went close to grabbing a hat-trick when he hit the post late on.
It was a deserved victory for City, condemning Carlo Ancelotti to his first defeat as Everton boss.
The hosts controlled most of the game without finding their usual intensity.
Both they and Everton were also down on their luck before the game. City lost goalkeeper Ederson, who was due to return from a one-match ban, to illness, while Everton were forced to make a late change as Bernard suffered a freak injury in the warm-up.
The Brazilian was cut badly on the knee after being caught by team-mate Yerry Mina during a drill and could not feature. Tom Davies was quickly drafted into the side, with Anthony Gordon taking his place on the bench.
City again had second choice Bravo in goal and the Chilean made a good early save when he palmed over from Seamus Coleman.
That attack was one of few from Everton in a first half dominated by City.
It was the correct decision, but City’s frustration was understandable given the length of time it took to be made.
VAR caused an even longer delay soon after as a check was made for a potential penalty for a foul on Mahrez.
Mahrez had initially been flagged offside but continued his run into the box where he was challenged by Lucas Digne. Confusingly, VAR overruled the offside to check for the penalty, but the game then restarted with a free-kick for the offside after it was deemed Digne had not fouled.
City attempted to push on after the interruptions, but Mahrez spurned good opportunities as he dragged an effort wide and then failed to make the most of a Benjamin Mendy cross. He also forced a good save from Jordan Pickford and Jesus slashed an effort wide.
Jesus made no mistake after the break as he put the game beyond Everton with two goals in quick succession.
His first was a fine curled finish beyond Pickford after being played in by Ilkay Gundogan and his second was a good first-time strike at the end of a slick passing move, with Mahrez playing the final ball.
City were looking comfortable, but Bravo gifted Everton a route back into the game. The City keeper brilliantly wrong-footed one Everton forward with a neat turn but then undid his good work by passing straight to Moise Kean on the edge of the area.
Kean drove forward and Dominic Calvert-Lewin crossed for Richarlison to tuck away at the far post.
City upped the tempo in response and Foden had a good run checked in the area before Mahrez had an effort blocked and Jesus drove against the post and had another shot saved by Pickford.
Everton also sensed a chance to get something, but Calvert-Lewin’s enthusiasm got the better of him with a reckless challenge on Fernandinho for which he was lucky to escape with a yellow card.