John Stones and Ruben Dias both found themselves on the scoresheet against West Ham United as goals from the centre-back pair sandwiched a Michail Antonio strike to see out a 20th consecutive victory in all competitions for Manchester City at the Etihad Stadium.
West Ham's performance deserved at least a point, and they had a brilliant chance to equalise through Issa Diop with the last kick of the game. It was not meant to be for the Frenchman, however, meaning City came away with all three points.
Here is how the City team performed:
Ederson - 7/10: Despite starting the game with a mistake that could have seen West Ham go 1-0 up, Ederson's confidence did not drop. He came out to claim every long ball and cross - a valuable asset to have in the game against West Ham since their side is a much taller one than City's.
The Brazilian was unneeded for the most part and was only called upon from time to time, but this did not affect the keeper's focus, meaning the back four could keep calm under pressure.
Kyle Walker - 6/10: Walker used his pace to keep The Hammers in check for the majority of the game. His attacking prowess, however, was invisible for most of the game.
Due to West Ham's pressure throughout the game, it was difficult for the 30-year-old to help his team's attack further up the pitch. Walker was wary of the attacking ambush from West Ham's front three, so he stayed back on most occasions.
Ruben Dias - 8/10: Dias gave his side the lead with a bullet header, and his first Premier League goal showed that the Portuguese defender is more than just a rock at the back.
Neither centre-back was able to stop West Ham from equalising, but Dias did his part in the win to stop any other hammer blows while scoring a very vital goal in City's scraped victory.
John Stones - 9/10: Stones restored City's lead with his fourth goal of the season - a stylish finish into the far corner from a low Riyad Mahrez cross.
The Englishman pushed into the middle of the park at any opportunity, which helped the City midfield trio gain a foothold against the opposition.
Oleksandr Zinchenko - 5/10: The West Ham goal showed a weakness in Zinchenko's position in midfield.
As soon as the ball was won back by David Moyes' men, Vladimir Coufal burst down the right, which was not covered by the Ukrainian defender. That meant the West Ham fullback had all the time in the world to put in a driven cross, eventually leading to an Antonio goal.
The left-back had his part to play further up the field, but he just could not pick the killer passes that City needed on the afternoon.
Fernandinho - 7/10: The Brazilian bailing out Ederson for a mistake early on set a tone for the rest of the game as Fernandinho was there to clear up any loose balls and bring a stop to any West Ham attacks.
He's a clear example that form is temporary, but class is permanent.
İlkay Gündoğan - 5/10: Gündoğan has been a consistent figure in this City side since December, which is why a poor performance was expected sooner rather than later.
The German has been run into the ground in recent fixtures and looked as if he needed a break towards the end of the game.
Kevin De Bruyne - 7/10: The Belgian seemed to be rusty and was unable to make the desired impact on the game that most would have hoped for.
Nonetheless, De Bruyne's array of passing was still evident as his assist helped Dias open the scoring on the half-hour mark.
That assist pushed the midfielder into the top 10 in terms of most assists in Premier League history, three behind David Beckham and 16 behind ex-Citizen David Silva.
De Bruyne continued to push the team through the rest of the game, but it was obvious that the midfielder will need some more time to get back to his best.
Ferran Torres - 4/10: Torres struggled to stamp his mark on the game, with Coufal pocketing him for the majority of his time on the pitch.
Despite making multiple runs, and covering Zinchenko when he was in need of help, the Spaniard was unable to make an impact in the last third of the pitch where he was most needed.
Riyad Mahrez - 8/10: The winger caused issues for Aaron Creswell and Ben Johnson down the right side all afternoon.
Mahrez was arguably Pep Guardiola's greatest attacking threat against West Ham, showcasing his class throughout the 90 minutes.
He managed to set up City's second goal after some brilliant trickery gave him the time and space needed to then stroll the ball towards Stones before he slammed a shot home.
Sergio Agüero - 5/10: It was clear from Agüero's first game back that the world-class striker was slightly rusty following a long spell on the sidelines.
The game will hopefully be a step in the right direction for the forward as he managed 60 minutes against a strong West Ham backline.
Gabriel Jesus - 5/10: The Brazilian replaced Agüero on the hour mark, with the Argentine offering little up front on his return to the side.
Although he linked up well in the attack after coming on, Jesus was unable to make himself into an attacking threat, dropping back too much to receive the ball in deeper positions.
It was a difficult game to catch up with as a substitute, and Jesus was not able to be the 'super sub' needed to close the game out in style.
Phil Foden - N/A - Subbed on in the 65th minute.
Rodri - N/A - Subbed on in the 89th minute.