Bernardo Silva scored a controversial first Premier League goal of the season as Manchester City beat Aston Villa 2-0 to go top of the table.
City dominated much of an entertaining encounter on a miserable evening but looked set to miss out on the chance to take over at the summit until Silva struck 11 minutes from time, albeit in contentious circumstances.
Villa boss Dean Smith was sent off for his protests after he felt Silva's goal should have been ruled out for offside against Rodri, who had won the ball back from Tyrone Mings.
Ilkay Gundogan's penalty sealed all three points to extend City's winning run to nine matches and put them top, although Manchester United can replace them when they face Fulham later on Wednesday.
City lost Kevin De Bruyne and Kyle Walker to injury but they are now unbeaten in 16 games in all competitions.
Emiliano Martinez had to be alert to deny Silva an early opening goal from close range before the marauding Joao Cancelo fired over the crossbar in an entertaining start.
Oleksandr Zinchenko replaced the injured Walker and Rodri's shot was deflected over, before fit-again Villa midfielder Ross Barkley called Ederson into action with heavy rain lashing down.
Phil Foden's shot was blocked after he was picked out by a brilliant pass from captain De Bruyne just before the break as the Villa defence continued to stand firm under pressure.
City remained on the front foot following the interval, yet they were almost caught on the break when Bertrand Traore brilliantly controlled Martinez's kick before trying his luck with a shot that was comfortably saved by Ederson.
Cancelo came close when he cut inside and struck the crossbar with his left foot after being set up by De Bruyne, who was replaced by Gabriel Jesus just before the hour mark with an ankle problem.
Gundogan somehow failed to finish from close range after his header was kept out by Martinez and great defending from Ruben Diaz prevented Jacob Ramsey from tapping in at the back post, with John McGinn also making a mess of a golden opportunity.
City's persistence finally paid off with the 36th shot of the match when Silva superbly rifled home with his left foot from outside the penalty area, although Rodri had clearly come from an offside position to dispossess Mings in order to set up the opener.
A furious Smith was ordered from the touchline and Gundogan added insult to injury with a spot-kick after Matty Cash was penalised for handball as a largely heroic defensive display from Villa went without reward.
What does it mean? Ominous City juggernaut rolls on
It looked like it might be one of those nights for City, but they delivered a late birthday present for Pep Guardiola two days after he turned 50.
Villa, playing their first Premier League game for 19 days following a coronavirus outbreak at the club, had put bodies on the line and threatened to snatch all three points on the break.
Yet City, who had 28 shots in a breathless contest, continued to knock on the door and finally ended Villa's resistance, sending another message to their title rivals.
Gundogan purple patch continues
Midfielder Gundogan showed his class once again and should have had more than just the one goal from the spot.
The Germany playmaker's penalty took his tally to seven goals this season – his best in a campaign for any side.
Gundogan had six shots, made two key passes and had a passing accuracy of 95.2 per cent – more than any of his team-mates.
What might have been for McGinn
Smith will surely not point the finger at any of his players, as Villa gave a great account of themselves despite only having three days of training following their absence due to COVID-19.
It may have been a different story if midfielder McGinn had not failed to make clean contact from around eight yards out when he ought to have put Villa in front.
Key Opta Facts
- Manchester City have won 15 of their last 16 Premier League home games against Aston Villa, including each of the last 11 in a row.
- 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 City – only Leeds United 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 City, 11 for Aston Villa) – only Manchester United versus Leeds in December has seen more in the Premier League this season (43).
City travel to Cheltenham Town for an FA Cup fourth-round tie on Saturday, while Villa are in Premier League action on the same day at home to struggling Newcastle United.