Match ends, Manchester City 1, Wolverhampton Wanderers 0.
Raheem Sterling converted a controversial penalty to reach 100 Premier League goals and give Manchester City victory in a one-sided contest with 10-man Wolves.
Sterling kept his cool to roll his 66th-minute spot-kick past Jose Sa after a lengthy VAR check ruled Joao Moutinho had illegally blocked Bernardo Silva's cross, even though it seemed to hit the Wolves midfielder on his armpit.
The decision compounded Wolves' frustrations given they were annoyed at Raul Jimenez's dismissal for two yellow-card offences within seconds of each other near the end of the opening period.
Not that the visitors could have any complaints on the balance of play. City had 24 shots compared to Wolves' three. Sa made three excellent saves, Conor Coady headed an Ilkay Gundogan effort off the line, Max Kilman blocked a goalbound Phil Foden effort and Jack Grealish somehow failed to convert Sterling's far-post cross with the goal at his mercy.
Kilman brought a save out of Ederson at the end but Wolves have failed to score in their past four games and managed just one goal in their past six.
In contrast, City have now six Premier League games in a row to maintain their place at the top of the table and keep the pressure on title rivals Liverpool and Chelsea.
As the first half drew to a close the atmosphere had been growing increasingly edgy amid allegations from City fans of Wolves' time-wasting, and play-acting in the case of Roman Saiss, who went down in his own area after getting an unseen, accidental finger in the eye from Sterling.
Yellow cards for Ruben Dias and Rodri for fouls on Adama Traore meant it was inevitable Jimenez would get one for dragging Rodri back close to halfway as the interval approached.
For the Wolves striker to then actively block Rodri's free-kick from a couple of yards was an act of folly. Referee Jon Moss had no choice other than to brandish a second yellow at Jimenez, who threw his skull cap down on a couple of occasions as he very slowly made his way off.
The dismissal condemned Wolves to a second-half rearguard effort in which Sa was particularly effective.
Sadly for Grealish, the same was not true of him. The introduction of Kevin de Bruyne for the £100m man came not long after his miss, which was poor and a long way short of the form that attracted Pep Guardiola to him in the first place.
Ederson was a bystander for most of the half. But the Brazilian was alert when it counted to keep out Kilman's header and, in the process, complete the 100th clean sheet of his City career.
- Reaction to Man City v Wolves, plus the rest of Saturday's Premier League matches
- 'His contribution to this club is massive' - reaction from Man City's Pep Guardiola
- 'The first yellow card is a crazy decision for me' - reaction from Wolves' Bruno Lage
Head clash reminder
Jimenez's recovery from a fractured skull has just been recounted in an excellent documentary made by Wolves that has been available to watch on the BBC.
The sight of Kilman and Neves clashing heads in the first half was a sickening reminder of that awful day at Arsenal, when Nuno Espirito Santo's immediate fear was that the Mexican's life was in danger.
Thankfully, it was soon apparent that the damage this time was not comparable. Kilman had blood running down his face and required a headband, while Neves was checked over before he too was allowed to continue.
The incident is bound to trigger discussion around the need for temporary concussion substitutes, although, given the history with Jimenez, it is hard to imagine the Wolves medical staff would have allowed either man to continue had there been any doubt about their fitness to do so.
As it turned out, Kilman completed the full 90 minutes and Neves lasted 82 before he was replaced by Francisco Trincao as Wolves boss Bruno Lage searched in vain for an equaliser.
City are next in action against Leeds at Etihad Stadium on Tuesday at 20:00 GMT, while Wolves play Brighton on Wednesday at 19:30.
Player of the match
- Squad number20Player nameBernardo SilvaAverage rating
- Squad number27Player nameJoão CanceloAverage rating
- Squad number31Player nameEdersonAverage rating
- Squad number47Player nameFodenAverage rating
- Squad number16Player nameRodriAverage rating
- Squad number3Player nameRúben DiasAverage rating
- Squad number7Player nameSterlingAverage rating
- Squad number14Player nameLaporteAverage rating
- Squad number8Player nameGündoganAverage rating
- Squad number11Player nameZinchenkoAverage rating
- Squad number17Player nameDe BruyneAverage rating
- Squad number9Player nameGabriel JesusAverage rating
- Squad number10Player nameGrealishAverage rating
- Squad number16Player nameCoadyAverage rating
- Squad number23Player nameKilmanAverage rating
- Squad number1Player nameJosé SáAverage rating
- Squad number3Player nameAït-NouriAverage rating
- Squad number27Player nameSaïssAverage rating
- Squad number8Player nameRúben NevesAverage rating
- Squad number22Player nameNélson SemedoAverage rating
- Squad number28Player nameJoão MoutinhoAverage rating
- Squad number32Player nameDendonckerAverage rating
- Squad number26Player nameHwang Hee-chanAverage rating
- Squad number10Player nameDaniel PodenceAverage rating
- Squad number37Player nameTraoréAverage rating
- Squad number11Player nameTrincãoAverage rating
- Squad number9Player nameJiménezAverage rating
- 27CanceloBooked at 81mins
- 3Rúben DiasBooked at 40mins
- 20Bernardo Silva
- 16RodriBooked at 43mins
- 8GündoganSubstituted forFodenat 56'minutes
- 9Gabriel Jesus
- 10GrealishSubstituted forDe Bruyneat 74'minutes
- 17De Bruyne
- 22Nélson Semedo
- 32DendonckerBooked at 78minsSubstituted forPodenceat 87'minutes
- 8NevesBooked at 45minsSubstituted forMachado Trincãoat 82'minutes
- 28João Moutinho
- 9JiménezBooked at 45mins
- 37TraoréSubstituted forHwang Hee-chanat 67'minutes
- 11Machado Trincão
- 17Fábio Silva
- 26Hwang Hee-chan
- Jonathan Moss
- Shots on Target
Second Half ends, Manchester City 1, Wolverhampton Wanderers 0.
Corner, Wolverhampton Wanderers. Conceded by Ederson.
Attempt saved. Maximilian Kilman (Wolverhampton Wanderers) header from the right side of the six yard box is saved in the top centre of the goal. Assisted by Daniel Podence with a cross.
Attempt blocked. Phil Foden (Manchester City) right footed shot from the centre of the box is blocked. Assisted by Raheem Sterling.
Attempt saved. Raheem Sterling (Manchester City) right footed shot from outside the box is saved in the bottom left corner.
Attempt saved. Phil Foden (Manchester City) left footed shot from the left side of the box is saved in the centre of the goal. Assisted by Oleksandr Zinchenko.
Substitution, Wolverhampton Wanderers. Daniel Podence replaces Leander Dendoncker.
Foul by Oleksandr Zinchenko (Manchester City).
Nélson Semedo (Wolverhampton Wanderers) wins a free kick in the defensive half.
Substitution, Wolverhampton Wanderers. Trincão replaces Rúben Neves.
João Cancelo (Manchester City) is shown the yellow card for a bad foul.
Foul by João Cancelo (Manchester City).
Hwang Hee-Chan (Wolverhampton Wanderers) wins a free kick in the defensive half.
Attempt saved. Rodri (Manchester City) header from the centre of the box is saved in the centre of the goal. Assisted by Phil Foden with a cross.
Corner, Manchester City. Conceded by José Sá.
Attempt saved. Gabriel Jesus (Manchester City) left footed shot from a difficult angle on the left is saved in the bottom left corner. Assisted by Kevin De Bruyne.
Foul by Rodri (Manchester City).
Rayan Aït-Nouri (Wolverhampton Wanderers) wins a free kick in the defensive half.
Leander Dendoncker (Wolverhampton Wanderers) is shown the yellow card for a bad foul.
- Our coverage of your Premier League club is bigger and better than ever before - here's everything you need to know to make sure you never miss a moment
Never a penalty Mr Moss.
“How that was a penalty I will never know, that is an incredible decision.”
All the empty seats behind that goal would agree.
You got robbed Wolves.
Never a pen but you know how it works when playing City.
From a neutral.
Wolves: 5 fouls = 3 bookings = 60% yellow card rate.
Man of the match: Jonathon Moss (Man City).
Needed a lot of help there.
Jimenez decision: Show consistency across all the matches as that is NOT currently happening.
Penalty: a “Big 6 decision” given.
Moss obviously offended by the choice of deodorant Moutinho is using!
Garbage. On the balance if play, it would have been 0-0 without that joke of a penalty decision. Moss needs to retire. Why do they keep refs who keep on making themselves the talking point over and over.
If I made a mess like that at work I'd be out on my ear.
But this week they were robbed blind by an incapable referee, the soft yellow and the quite ridiculous penalty decision. Unlucky, and yes I would have said the same if it was given to liverpool . Good win for City but they scraped and undeserved win thanks to John Moss.