Manchester City wound up eventual 2-0 winners in a hard fought contest against Aston Villa, sending them to the top of the Premier League for the time being.
Villa started brightly and were keen to take the game to City during the first 10 minutes, but quickly cooled off. City maintained control of possession throughout the first half, but couldn't make good on countless corners and passing spells with the visitors producing a fine defensive display.
Pep Guardiola's side continued to dominate after the break and saw a number of shots go everywhere but the back of the net. Joao Cancelo hit the crossbar and Ilkay Gundogan could've had a brace, but the missed chances allowed Villa back into the game.
The game opened up in the final 20 minutes and Dean Smith's side came mightily close through Bertrand Traore and Douglas Luiz, but the missed chances resulted in a lapse in concentration at the back. Bernardo Silva won the ball and rifled it past Emi Martinez in the 79th minute to give his side the lead despite offside calls, before Ilkay Gundogan secured the points for City with a 90th minute penalty.
In a game that had more chances than ever, here's how the players rated at the Etihad Stadium.
1. Goalkeeper & Defenders
Ederson (GK) - 6/10 - Ederson had little to do at times, but had to be on his toes with Villa looking dangerous in flutters. His four saves were key to three points.
Kyle Walker (RB) - 5/10 - Walker struggled with an injury but persevered until having to come off just shy of the half hour mark.
John Stones (CB) - 6/10 - After scoring a brace last time out, Stones was keen to pile forward and be the man to break the deadlock.
Ruben Dias (CB) - 8/10 - Dias kept things tight at the back and stopped any counter attacks with City piling men forward.
Joao Cancelo (LB) - 6/10 - Looked dangerous on the overlap and caused Villa a headache down the left flank. Rattled the crossbar in the 54th minute after switching wings.
Kevin de Bruyne (CM) - 6/10 - Struggled to impose himself at times, but grew into the game with some exceptional long passes. Pulled off around the hour mark in favour of a system change, with Gabriel Jesus being introduced.
Rodri (CM) - 7/10 - Rodri was the calming influence at the base of City's midfield.
Ilkay Gundogan (CM) - 7/10 - Gundogan was a constant threat for City and denied a goal by Villa defending that was nothing short of heroic. A tireless presence and so unfortunate not to score.
Bernardo Silva (RW) - 8/10 - The Portugal international scored a wonderful, and incredibly, important goal.
Raheem Sterling (ST) - 5/10 - Sterling struggled to assert himself as the false nine and continually rotated with Bernardo Silva, but to no avail. After getting back in the goals in the previous game, this was one to forget.
Phil Foden (LW) - 7/10 - Turned Matty Cash inside out several times during the first half and continued to look threatening beyond the break. Foden looks dangerous with every touch of the ball.
Oleksandr Zinchenko - 5/10 - Zinchenko was on after half an hour to replace an injured Kyle Walker, but didn't offer the same attacking presence as Cancelo did down the left.
Gabriel Jesus - 6/10
Riyad Mahrez - 6/10
5. Goalkeeper & Defenders
Emi Martinez (GK) - 7/10 - Made a fine, point blank save to deny Bernardo Silva after just three minutes. Could do nothing to stop Silva's goal.
Matty Cash (RB) - 5/10 - Was worked tremendously hard by Phil Foden throughout the first half and was caught out a few times. Gave away the penalty in unfortunate fashion - a bad day at the office.
Ezri Konsa (CB) - 8/10 - Exceptional performance from Konsa who was everywhere. The 23-year-old read the game supremely will to snuff out danger several times. The goal was by no means his fault.
Tyrone Mings (CB) - 6/10 - Dominant aerially and a leader at the back for so long, until a lapse in concentration saw him dispossessed with ease and allowed City to score.
Matt Targett (LB) - 7/10 - City's strongest attacks came from the left side, but Targett did well when called upon and kept them quiet from the right. His influence grew after the break when the onslaught came from all angles, but was eventually forced off with injury.
Douglas Luiz (CM) - 6/10 - The better of Villa's double pivot, Luiz was a menace against his former employers.
John McGinn (CM) - 5/10 - Worked hard off the ball, but lacked his usual tenacity and drive in possession from deep. An unusual amount of passes went wayward from McGinn.
Bertrand Traore (RM) - 6/10 - Traore is full of confidence following an impressive streak of form and looked dangerous on the counter, but lacked the composure in front of goal.
Ross Barkley (AM) - 6/10 - Barkley was keen to influence the game for Villa, but lacked a sharp final ball having been out of action for so long. An encouraging 70 minutes or so in the tank after a long spell out.
Jack Grealish (LM) - 6/10 - Wasn't at his usual, influential best to the surprise of many. Grealish did grow in influence as the game drew on, however, feeding colleagues through on the counter attack with nice passing.
Ollie Watkins (ST) - 6/10 - Barely saw the ball with Villa for most of the game, but came to life in the final 15 minutes with several composed and accurate crosses for teammates.
Anwar El Ghazi - 5/10
Jacob Ramsey - 6/10
Neil Taylor - N/A