Wayne Rooney put the Toffees in front after 35 minutes with his 200th Premier League – becoming just the second player after Alan Shearer to reach that milestone.
Kyle Walker saw red soon after and as City piled on the pressure in the second half, Raheem Sterling eventually volleyed home before Morgan Schneiderlin picked up a second booking at the death.
Here are our player ratings from the Etihad following an end-to-end encounter:
Ederson – The Brazilian keeper didn't have much to do with Everton sitting deep for the majority of the game. However, there are questions marks over him as a sweeper and a few rash moments could have ended badly. 6
Kyle Walker – It was his first start at the Eithad and it ended prematurely. His second yellow was harsh but why did he even give the referee a decision to make? 2
Nicolas Otamendi – Like his goalkeeper, Otamendi wasn't called upon defensively throughout the game. 6
Vincent Kompany – Was probably the best defender for Guardiola tonight. Used the ball well and carried it forward. 7
John Stones – Caught napping for the opener. He could have been tighter to Rooney and was replaced after 65 minutes. 5
Leroy Sané – Deployed as a left wing-back, Sané struggled to get the better of Mason Holgate. It was his loss of possession which led to the Everton goal. 4
Fernandinho – Wasn't his usual self tonight. He recklessly dove in during the lead up to the Everton goal as Calvert-Lewin sold him a dummy. You expect better from him. 5
Kevin de Bruyne – Huffed and puffed but couldn't blow the house down. Everton looked to shackle him by man-marking him but when possible he carved out openings for Agüero and co. 7
David Silva – Similar to De Bruyne's performance in many respects. Everton had a man on him at all times but he found space like all good players do. Unlucky not to open the scoring. 7
Gabriel Jesus – The Brazilian forward looked out of sorts tonight playing against what was a back seven at times for Everton. Had one good chance which he fired straight at Jordan Pickford and was sacrificed at half-time following the Walker sending off. 5
Sergio Agüero – This wasn't the Argentine at his best but he still caused havoc. Last ditch challenges prevented him getting on the scoresheet and his deft touch got Sterling in before he fired over. 7
Sterling for Jesus – Sterling replaced Jesus at half-time and immediately injected pace into the City site. He blazed a glorious chance over but made amends by lashing a volley home to equalise. 8
Danilo for Stones – The former Real Madrid full-back came on with 25 minutes to play and made an impact. He was lofting balls into the area, but not aimlessly doing so. His cross led to the goal. 7
Bernardo Silva for Leroy Sané – Silva seemed to get in the way of his namesake David and De Bruyne. Showed glimpses of real quality though. 6
Jordan Pickford – His kicking was key for Everton as they looked to hit City on the counter. Thwarted Agüero early on and was generally quick off his line. Couldn't do anything about the goal. 7
Mason Holgate – Football can be cruel sometimes. Holgate was superbly defensively as he nullified Sané and disrupted the City attack whenever they attacked the Everton right. His poor defensive header fell straight into the path of Sterling who rifled home. Learning curve for the youngster tonight. 6
Michael Keane – Keane looked at home in the Everton defence. Tasked with playing on the right of the back three he filled in for Holgate when he pushed on and acted as a sweeper for Williams. 7
Phil Jagielka – Didn't look his age as he slid in to prevent Agüero just as he was primed to pull the trigger. A solid effort from the Everton skipper. 7
Ashley Williams – Williams was tasked with pushing into midfield to help block the space ahead of the defence and did well at doing so. 7
Leighton Baines – Like the rest of the Toffees' defence, Baines did his job diligently. He made a superb sliding tackle to prevent Walker from getting in after a poor Pickford clearance. 7
Idrissa Gueye – Tasked with man-marking De Bruyne and Silva. He was thorough in his undertaking of the job and stifled the two playmakers for large periods of the game. 7
Morgan Schneiderlin – The Frenchman's game mirrored Holgate's in a way. He did well for large chunks but a moment of madness saw him receive his marching orders. Must have been frustrating having seen him manage a yellow card for the best part of 80 minutes before sliding in on Agüero. 4
Tom Davies – The youngster could not repeat his memorable performance against Manchester City at Goodison Park from January when he scored a stunning individual goal in a 4-0 rout. He did a job, though, playing as a box-to-box midfielder. He was tasked with supporting Calvert-Lewin and Rooney. He lasted the hour before Koeman replaced him. 6
Dominic Calvert-Lewin – Comfortably the man of the match. The 20-year-old, playing in an unfamiliar role, was often isolated but held his own against the City defence. He worked the channels and created the goal showing great composure on the ball. 9
Wayne Rooney – Rooney put in a shift tonight as the support striker. When Everton needed him to drop into midfield he did just that but he was always looking to support Calvert-Lewin when possible. Took his goal superbly. 8
Gylfi Sigurðsson for Williams – It wasn't a debut to remember by any stretch of the imagination for the £45million signing but he kept things ticking over. Will be interesting to see where he fits in Koeman's system.
Davy Klaassen for Davies – Injected some drive and composure into an Everton midfield that was losing control of the game. Couldn't impose himself as he would have liked with City seeing almost all of the ball.
Muhamed Bešić for Wayne Rooney N/A