Bernardo Silva and Ilkay Gundogan's late goals broke Aston Villa's stubborn defence late on to send Man City second in the Premier League with a 2-0 win at the Etihad.
Silva's 80th-minute opener, stunning as it was, had more than a touch of controversy about it after Rodri was adjudged to have been onside by Tyrone Mings' heavy touch in the build-up.
Villa's remonstrations lead to manager Dean Smith being sent to the stands. "I don't think anybody can tell me why the goal's been given; he's taken advantage of an offside position," said Smith.
"I told the fourth official I thought they'd had juggling balls for Christmas."
Gundogan then rubbed salt in the wound in the final minute after Matty Cash was ruled to have handballed in his own penalty area, leaving the German midfielder to beat Emiliano Martinez from 12 yards.
The scoreline was harsh on Villa, who had stretched their hosts throughout the night and come close a number of times in the second half, but they were ultimately powerless to stop Pep Guardiola celebrating his 50th birthday by taking his side top of the Premier League, until they were knocked back down to second by Manchester United's win at Fulham later on Wednesday.
Manchester City: Ederson (7), Walker (6), Stones (6), Dias (7), Cancelo (7), Silva (7), Gundogan (6), Rodri (8), Sterling (5), De Bruyne (7), Foden (7).
Subs: Zinchenko (7), Jesus (6), Mahrez (6).
Aston Villa: Martinez (7), Cash (6), Konsa (6), Mings (7), Targett (7), Barkley (5), Luiz (6), McGinn (5), Traore (7), Watkins (6), Grealish (7).
Subs: El Ghazi (5), Ramsey (5), Taylor (5).
Man of the match: Rodri.
Villa's resistance breaks late on as City go top
Even with a full-strength line-up taking to the pitch, it was impossible to know what to expect from an Aston Villa side without a league game in 19 days on the back of their Covid-19 nightmare.
But even on a good day, Smith would have been happy with Ross Barkley twice testing Ederson before half-time, with Bertrand Traore and Jack Grealish both making nuisances of themselves out wide.
Guardiola, managing his first game since his 50th birthday, would have been less impressed with his side's ability to find a way through the last line of the Villa defence having manufactured presentable opportunities time after time.
It took a wonderful reaction stop from Martinez to keep out Silva's early shot from a corner but of their 12 other efforts, eight were blocked, with Kyle Walker's daisy-cutter the only other save they pulled out of the Argentine 'keeper before the break.
Guardiola would have been much more enamoured with City's second-half showing, however, which gave far more of an indication why they have worked their way back into the title race.
From the off, they moved the ball with more intensity and a higher tempo, but still lacked that killer instinct to find a way through.
Villa still packed a punch of their own on the counter, with Traore pulling a full-length stop out of Martinez and Ruben Dias denying Grealish on the stretch with a last-ditch block, but City dominated the chances after the break and almost led when Joao Cancelo smacked the bar from a typically outrageous Kevin De Bruyne outside-of-the-boot assist.
Gundogan twice missed presentable chances before John McGinn missed a glorious chance to test Ederson when he produced an air shot while unmarked 12 yards out, but with the game seemingly heading for a stalemate, Silva finally found the breakthrough.
Rodri, jogging back from an offside position, pounced on a poor control from Mings before teeing up his midfield team-mate to beat Martinez from the edge of the box, but the lack of an offside flag enraged the visitors and saw Smith dismissed by referee Jon Moss.
That was not the end of the drama. Substitute Gabriel Jesus' header was drifting wide before a raised Matty Cash arm earned City a last-minute penalty, which gave Gundogan a chance to put his shooting woes behind him and dispatch the spot-kick from 12 yards to seal the hosts' ascent to the top of the Premier League table, albeit only for a couple of hours.
Analysis: The loophole which played Rodri onside
Sky Sports' Ron Walker:
"There was no need for any VAR lines to work out whether Rodri was offside or not when the ball was played forward by Manchester City in the build-up to their opening goal. You could've driven a bus in the space between him and Tyrone Mings, the last Aston Villa defender.
"However, the laws of the game are not that simple. Mings' controlling the ball on his chest gave the Spanish midfielder a loophole through which he was no longer deemed to be committing an offence, and could quite legitimately set up Bernardo Silva to fire home.
"One of the caveats of Law 11 in the Laws of the Game, covering the offside rule, states: 'A player in an offside position receiving the ball from an opponent who deliberately plays the ball, including by deliberate handball, is not considered to have gained an advantage, unless it was a deliberate save by any opponent.'
"It makes sense why Dean Smith should feel a sense of injustice after watching Rodri gain such a clear advantage, and without Mings having eyes in the back of his head he would be totally reliant on his team-mates to let him know he was in danger of being dispossessed.
"But those are the rules - in black and white. Ignore them at your peril."
Man of the match - Rodri
Rodri was touted as a Fernandinho replacement in the early stages of his Manchester City career and the Spanish midfielder showed why he can be adept with and without the ball against Aston Villa.
No player touched the ball more than the 24-year-old, who won all nine of his aerial duels in the middle of the park, but also chipped in with a late assist, albeit a controversial one, for Silva's opener.
Without the ball, he made four tackles, beaten only by Matt Targett across both squads, and regained the ball 11 times - the most of any player - in was a midfield showing of real class.
- Man City have won 15 of their last 16 Premier League home games against Aston Villa, including each of the last 11 in a row.
- Manchester City have kept 10 clean sheets in their 18 Premier League games this season - only in 1976-77 (17 games) have they reached 10 in fewer games in their league history.
- Aston Villa made 10 blocks against Man City - only Leeds against Liverpool on the opening day have made more in a Premier League game this season (12).
- There were 39 shots in total in this match (28 for Man City, 11 for Aston Villa) - only Manchester United vs Leeds in December has seen more in the Premier League this season (43).
Manchester City travel to League Two Cheltenham Town in the fourth round of the FA Cup on Saturday; kick-off at 5.30pm.
Aston Villa are back on Sky Sports later that day as they host Newcastle on Saturday Night Football from 7.30pm; kick-off at 8pm.