Match ends, Manchester City 2, Aston Villa 0.
Late goals from Bernardo Silva and Ilkay Gundogan ended Aston Villa's resistance as Manchester City led Premier League for the first time this season - for a couple of hours before neighbours Manchester United regained top spot.
Pep Guardiola's side were knocked off the summit later on Wednesday when United beat Fulham, but the determination they showed to claim their sixth successive league win underlined that they are here to stay in this title race.
Villa's first team, playing their first game since New Year's Day because of a coronavirus outbreak at the club, showed no after-effects of their 19-day hiatus and produced a dogged defensive display.
They held out until the 79th minute, when Rodri controversially stole the ball off Tyrone Mings and fed Bernardo, who brilliantly fired into the top corner from the edge of the box.
Rodri was offside before he returned to an onside position to challenge Mings and Villa manager Dean Smith was sent off for his protests.
It meant he was not there to see Gundogan make sure of the points from the spot soon afterwards after Matty Cash handled a Gabriel Jesus header, in what was a far more straightforward decision for referee Jon Moss.
- Reaction from Man City v Aston Villa, plus follow Fulham v Man Utd
- Villa boss Smith fumes at 'pathetic' offside decision
- Man Utd or Man City to end day top? Cassia bassist Lou Cotterill takes on Lawro
- City duo De Bruyne and Bronze voted into Uefa Fans' Teams of the Year
City's perseverance pays off
For long spells on a miserable night at Etihad Stadium it appeared that City's breakthrough would never come.
Things might have been more straightforward for City had Bernardo converted from close range when a corner was headed into his path after four minutes, but instead Emiliano Martinez made a brave save at his feet and set the tone for a battling Villa performance.
City had 24 efforts at goal before Bernardo eventually broke the deadlock, but 12 of them were blocked and the closest they had come to a breakthrough was when Joao Cancelo's second-half shot bounced back off the bar.
Villa rode their luck, especially when Martinez denied John Stones from a corner and the ball somehow evaded Gundogan when he appeared certain to follow up and score, but they also had chances of their own.
Bertrand Traore almost made the most of a slip by Kevin de Bruyne but his curling effort was well saved by Ederson, who also had to claw away a fierce Douglas Luiz effort to secure his side's fifth consecutive clean sheet.
Villa vibrant on return to action
Villa leave Manchester empty handed, just as they did in their previous Premier League game against United on 1 January, but they deserve great credit for their performance here.
Nine unnamed players and five members of their backroom staff had tested positive for Covid-19 at the start of January, and the club's training ground only reopened on Sunday.
They had seen their past two league games, against Everton and Tottenham, postponed but this was a reminder of the way they were playing before their season was interrupted.
Smith was December's manager of the month after his side stayed unbeaten across five games and ended the year in fifth.
They have dropped out of the top half while they have been out of action but on this evidence that is a false position - the defensive improvement that has been the hallmark of their season was again on show here, as was their spirit.
'Did they get juggling balls for Christmas?'
Manchester City boss Pep Guardiola to MOTD: "I had the feeling we controlled the game. The top four players they have, player like Jack Grealish and Ross Barkley, the feeling is that wow, you feel the dangers in every actions.
"We arrived at the byline many times but could not score the goal but Bernando Silva was there and his goal made the difference.
"We struggled against Brighton in the last game - they are one of the best teams for creating chances, so it has been hard for us. Maybe they are not clinical but they are good."
Aston Villa manager Dean Smith, speaking to MOTD: "It was a farcical decision (to allow the first goal). I've not seen a goal like that given. It needs to be looked at. I don't think anyone in this stadium thought it was a goal.
"I thought they would go over to the VAR screen. I saw the incident and saw it was kicking off, so I asked the fourth officials did they get juggling balls for Christmas.
"For the second goal, a header from a yard out that has hit his arm. That's not handball. Ridiculous.
"It was a heroic performance in terms of energy and commitment but we didn't show enough quality against a very good team."
City travel to play League Two side Cheltenham in the FA Cup on Saturday (17:30 GMT) with the game being shown live on BBC One. They return to Premier League action on Tuesday with a trip to West Brom (20:15).
Villa are out of the FA Cup but play their rearranged Premier League game with Newcastle, postponed at the end of November because of Covid-19 cases in the Magpies camp, on Saturday (20:00) as they begin to work through their fixture backlog.
City beat Villa again - the stats
- Manchester City have won 15 of their past 16 Premier League home games against Aston Villa, including each of the past 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 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 Villa) - only Manchester United v Leeds in December has seen more in the Premier League this season (43).
- City's Bernardo scored his first Premier League goal since July, and his first at the Etihad since netting a hat-trick against Watford in September 2019.
- Gundogan's penalty was his seventh goal in all competitions this season, his best goalscoring season in his top-flight career.
- With five shots and six chances created, City's Phil Foden was involved in more shots than in any game in his Premier League career.
- 2WalkerSubstituted forZinchenkoat 28'minutes
- 3Rúben Dias
- 17De BruyneSubstituted forGabriel Jesusat 59'minutes
- 7SterlingSubstituted forMahrezat 72'minutes
- 20Bernardo Silva
- 9Gabriel Jesus
- 18TargettSubstituted forTaylorat 75'minutesBooked at 86mins
- 6Douglas Luiz
- 7McGinnBooked at 67mins
- 15TraoréSubstituted forEl Ghaziat 68'minutes
- 20BarkleySubstituted forRamseyat 68'minutes
- 21El Ghazi
- 27El Mohamady
- Jonathan Moss
- Shots on Target
Second Half ends, Manchester City 2, Aston Villa 0.
John Stones (Manchester City) wins a free kick in the defensive half.
Foul by Jack Grealish (Aston Villa).
Foul by Rodrigo (Manchester City).
Douglas Luiz (Aston Villa) wins a free kick in the attacking half.
Goal! Manchester City 2, Aston Villa 0. Ilkay Gündogan (Manchester City) converts the penalty with a right footed shot to the centre of the goal.
Attempt missed. Gabriel Jesus (Manchester City) header from the left side of the six yard box misses to the right. Assisted by Riyad Mahrez with a cross.
Penalty conceded by Matthew Cash (Aston Villa) with a hand ball in the penalty area.
Corner, Manchester City. Conceded by Emiliano Martínez.
Attempt saved. João Cancelo (Manchester City) right footed shot from outside the box is saved in the bottom left corner. Assisted by Bernardo Silva.
Neil Taylor (Aston Villa) is shown the yellow card for a bad foul.
Bernardo Silva (Manchester City) wins a free kick in the defensive half.
Foul by Neil Taylor (Aston Villa).
Foul by Bernardo Silva (Manchester City).
Jack Grealish (Aston Villa) wins a free kick in the attacking half.
Goal! Manchester City 1, Aston Villa 0. Bernardo Silva (Manchester City) left footed shot from outside the box to the top left corner. Assisted by Rodrigo.
Foul by Gabriel Jesus (Manchester City).
Douglas Luiz (Aston Villa) wins a free kick in the defensive half.
Corner, Manchester City. Conceded by Matthew Cash.
- You can stream five fourth-round games live on the BBC this weekend, including Liverpool's trip to Manchester United. Find out more here.