Dinamo were eying a place in the knockout stages for the first time in their history and they were going through when Dani Olmo's sublime volley opened the scoring.
City headed into the match on the back of a chastening derby defeat to Manchester United and with their place in the last-16 as group winners already secured.
However, Pep Guardiola's side summoned the fight to pull level through Jesus' 34th-minute header and a quickfire brace early in the second half – taking the 22-year-old past 100 career goals – ended the argument, before Phil Foden got the goal his efforts deserved four minutes from full-time.
A sedate opening to the contest was blown apart in the 10th minute when Olmo watched Damian Kadzior's pass over his right shoulder to volley superbly beyond the flimsy efforts of Claudio Bravo in the City goal.
Bravo's opposite number Dominik Livakovic got down well to keep out Ilkay Gundogan's deflected low drive but City offered little threat until an equaliser the hosts angrily disputed.
Attempts to win the ball back from Foden and Jesus left Zagreb players nursing knocks, but City understandably played on with Petar Stojanovic prone on the turf and their Brazil striker headed home Riyad Mahrez's floated cross.
Tempers flared immediately afterwards, with Dinamo captain Arijan Ademi booked for his confrontational protests, although there was no excuse for Amer Gojak's elbow into Rodri's face in first-half stoppage time. Inexplicably, there was no red card despite VAR being available.
Nanad Bjelica's men failed to channel their indignation in a lackadaisical start to the second half, with Jesus coolly doubling his tally from Foden's deft pass.
Switching Foden on to the left of the City forward line and Bernardo Silva back into midfield was reaping dividends, mainly for Jesus, who steered home Benjamin Mendy's cross following a delightfully slick 54th-minute move.
Man City's fourth, from Phil Foden ✨ pic.twitter.com/L98KuV9xGU— Bleacher Report Live (@brlive) December 11, 2019
Joao Cancelo thundered over before Jesus headed wastefully over from another Mendy cross as the fight fell out of Dinamo, with Foden slotting in Silva's cutback for the final flourish as the home team's European adventure came to an end.
What does it mean? Undefeated group campaign can bolster City's Euro belief
Speaking to BT Sport before the match, Ilkay Gundogan conceded City's hopes of a third consecutive Premier League title are effectively over as they sit 14 points behind leaders Liverpool. It means the focus come February can turn towards the one major honour to elude Guardiola during his time in Manchester. The pressure of the latter stages of this competition have frequently overwhelmed City but a much-changed side overcoming a deficit with composure and class in a hostile environment is something to build on. For Dinamo, meanwhile, the loss allied to Atalanta's win left them bottom of the group.
Fifty-up Foden makes case for more prominent role
Jesus will deservedly take the headlines but City's England Under-21 midfielder provided the spark for their equaliser, created the second and fed Mendy to cross for the third. Foden then showed his eye for a goal and bring a verve and energy sorely lacking from many of his team's recent displays. This was a 50th outing in City colours – many more should come in the starting XI from this point.
VARCE! Lack of red card for Gojak a joke
As Dinamo forlornly chased shadows during the second half, Gojak might have wished referee Carlos del Cerro Grande had put him out of his misery. But on he played, after the sight of the Zagreb midfielder thudding his elbow close to Rodri's eye socket provided a major talking point. If VAR cannot help the officials out in such a – to coin a phrase – clear and obvious instance, serious questions must be asked.
Dinamo will hope for better local-derby fortunes than City when they host Lokomotiva Zagreb on Saturday. Guardiola's side travel to face managerless Arsenal in the Premier League a day later.