The winger was in the perfect place to turn in Jack Grealish’s low cross in the 63rd minute to secure a big three points in a thrilling clash.
Chelsea’s Carney Chukwuemeka and Nathan Ake both hit the woodwork as City took the win to move within five points of leaders Arsenal.
City settled quickly and dominated the early possession, but opportunities were hard to create against a well-organised defence.
It was Chelsea that carved out the first half-chance in the 15th minute when Christian Pulisic tried to break beyond the City back line but was denied by a precision tackle from John Stones.
The United States international was injured in the challenge and he became the second Chelsea forward forced off through injury after Raheem Sterling was replaced inside five minutes.
He received a warm reception from the away fans as he made his way back around the pitch to the changing room and responded with applause for the City fans.
Chelsea gathered some momentum has the half progressed and Erling Haaland’s biggest moment from the opening half an hour was in his own box with a nearpost header away from danger as Chelsea starved him of opportunities at the other end.
But the Norwegian couldn’t be kept quiet for long and when he raced onto Gundogan’s through-ball five minutes later, an exquisite first touch gave him a sight of goal but he fired a powerful strike just over the angle of the post and bar.
And the half ended in lively fashion with Chelsea substitute Chukwuemeka hitting the inside of the post with a deflected 20-yard strike before Kepa Arrizabalaga was twice called into action.
The Spanish keeper collected a Kevin De Bruyne effort before keeping out Joao Cancelo’s low drive after the full-back created the chance for himself.
1 - Against Chelsea, John Stones had the most touches of any player (102), completed 98% of his passes (85/87), won all of his aerial duels (4/4), and made the most clearances of any Manchester City player (4). Rock. pic.twitter.com/cicnzkkvLV— OptaJoe (@OptaJoe) January 5, 2023
If the game started to warm up before half-time, it got even livelier after the restart with Pep Guardiola making a double change during the break - Rico Lewis and Manuel Akanji replacing Cancelo and Walker.
City were quick out of the blocks and almost found an opener in the 50th minute when De Bruyne’s deep cross picked out Ake, but his header came back off the post.
De Bruyne then fired a low shot that was kept out by Arrizabalaga and hit another just off-target from close range.
Guardiola then made another two changes with Mahrez and Grealish and just over two minutes later they combined for the opening goal.
A move started by Ederson ended with Grealish running onto De Bruyne’s pass and threading a perfect pass for Mahrez to finish at the far post.
Haaland was close to adding a second but couldn’t make a good contact with De Bruyne’s cross.
Chelsea took more risks to try to grab an equaliser and in injury time Lewis Hall smashed a decent chance high over the bar.
Stones the rock
The City defender has been in imperious form since returning from the World Cup, although he was before the international break too.
With Chelsea trying to thread passes beyond our defence, Stones had to be alert to the danger.
His tackle on Pulisic midway through the first half was immaculate and was almost a matchwinning moment.
The only sour note was that the American was unfortunately injured in the incident.
But taking place just in front of the away end, City fans knew exactly how good the tackle was.
They chanted his name and Stones responded by holding the City badge to his chest.
It was the standout moment of another immaculate performance from the man of the match as he held strong from Chelsea's late onslaught.
Even when Chukwuemeka got a good shot at goal, it was Stones that comfortably tidied up the danger and set City off an attack.
The substitutions from Pep Guardiola worked out well for City as they gained an advantage at the start of the second half.
Lewis and Akanji came on half-time and the former continues to impress with incredible composure against another top side.
But the second double change of Grealish and Mahrez worked perfectly with the pair combining for the only goal.
It was another brilliant team goal started by our goalkeeper that stretched the home side with Grealish’s delicious cross in the corridor of uncertainty brilliantly picking out Mahrez.
CHELSEA XI: Arrizabalaga, Azpilicueta, Thiago Silva, Koulibaly, Ziyech (Gallagher 69), Zakaria, Kovacic, Cucurella (Hall 69), Sterling (Aubameyang 5, Hutchinson 69), Havertz, Pulisic (Chukwuemeka 22)
Subs: Bettinelli, Jorginho, Chalobah, Humphreys.
CITY XI: Ederson, Walker (Akanji 46), Stones, Ake, Cancelo (Lewis 46), Rodrigo (Phillips 85), Gundogan, De Bruyne, Bernardo (Mahrez 60), Foden (Grealish 60), Haaland
Subs: Ortega Moreno, Alvarez, Gomez, Palmer
WHAT IT MEANS
City remain second in the Premier League but have closed the gap to five points on leaders Arsenal.
The Gunners dropped points for only the third time this season when they drew with Newcastle on Tuesday and City took the opportunity to narrow their advantage.
If you enjoyed tonight’s game then get ready to do it all over again on Sunday when Chelsea come to the Etihad Stadium in the FA Cup.
City beat the Blues in the Carabao Cup in November and we face each other again in the third round of the FA Cup at 16:30 UK time.
That’s followed by the Carabao Cup game away to Southampton on Wednesday, January 11 with our next match in the Premier League away to Manchester United on Saturday at 12.30pm UK time.
"For a long time we’ve been there on top or close - we try. Old Trafford next is a big challenge for us. But it was important for us to start these three games with a win for our mood and confidence."
"The manager said to me, be aggressive and attack, stay high and wide and I did that. It was weird because I was speaking to Riyad inside and he thought the keeper would get it and so did I. I thought Erling has got to be somewhere in there! I said to him, where were you? He said because everyone was in there he pulled back. I thought the keeper would get it but now I’m going to praise my cross. I thought I played that too close to him."
"We don't focus on the table so early. There are 63 points to play for, we have to take it a game at a time. In previous years we’ve been on winning runs, we have to keep the momentum going. If we play like we did today then we can go all the way this season."
News about Chelsea v Man City
Guardiola: There are a lot of points still to play for!
Pep Guardiola believes Thursday night's victory over Chelsea proves City are determined to fight for the Premier League title again this season. Watch more
Chelsea 0-1 City: Pitcam highlights
All the best moments from our crucial Premier League victory at Chelsea from a unique angle. Watch more
Extended highlights: Chelsea 0-1 City
Watch the extended highlights from our Barclays Premier League victory over Chelsea at Stamford Bridge. Watch more
Chelsea v City: Full-match replay
Watch the full 90 minutes from City's Premier League clash with Chelsea on CITY+ and Recast. Watch more
Chelsea 0-1 City: Stats of the match
City ground out an excellent one goal victory at Stamford Bridge on Thursday night to maintain pressure on Premier League leaders Arsenal. Read more
Lewis 'changed the game from minute one' - Pep
Pep Guardiola says City were a different side in the second half as we secured a 1-0 victory over Chelsea at Stamford Bridge. Read more
Gallery: City conquer Chelsea in the capital!
Riyad Mahrez emerged from the bench to score in the second-half to inspire a 1-0 Premier League victory over Chelsea in London. View more
Short highlights: Chelsea 0-1 City
Check out our bitesize video highlights package from our 1-0 victory over Chelsea. Watch more