The visitors had two huge chances through Rayan Ait-Nouri and a skewed Jean-Ricner Bellegarde pass for Marshall Munetsi in the first half, but they were unable to put them away.
City made them pay for their missed opportunities when Kevin De Bruyne fired the hosts ahead 10 minutes from half-time.
Wolves struggled for any foothold in a disappointing second half and fell to defeat, missing out on the chance to equal their 1946 top flight winning record of seven games.
Analysis
Vitor Pereira was forced into one change to his Wolves side that beat Leicester last time out.
In-form striker Jorgen Strand Larsen was ruled out with a slight groin issue and was replaced by Bellegarde.
Tommy Doyle returned to the squad and made the bench, while Carlos Forbs was left out on his return to his old club and replaced by Pedro Lima.
There was also a familiar face in the Manchester City starting XI, as former Wolves man Matheus Nunes lined-up at right-back.
Talismanic striker Ering Haaland returned from his injury and was named among the substitutes.
Ruben Dias had an early effort from distance that had Jose Sa scrambling, but it flashed wide.
At the other end, Nunes was being booed by the travelling fans with every touch and Andre stole the ball from him to release Matheus Cunha, but his shot was off target.
Marshall Munetsi of Wolverhampton Wanderers is challenged by Nico O’Reilly (Photo by Stu Forster/Getty Images)
City were largely dominating possession and finding space down the flanks, but Wolves were standing firm in defence and looking for counter-attacking opportunities.
De Bruyne flashed a dangerous ball across goal but Matt Doherty defended it well, before Wolves set up the biggest chance of the game so far.
Cunha’s unbelievable pass put Bellegarde in, one-v-one with Ederson, but instead of shooting he tried to set Munetsi up for a tap-in, but his pass was too far ahead of his team-mate who came sliding in.
Moments later, Ait-Nouri rattled the post with a shot as the ball fell to him in the box before Josko Gvardiol cleared his follow-up off the line.
Andre was seriously impressive in the Wolves midfield as he pressed aggressively and made countless tackles, but it took him losing the ball in the 35th minute for City to open the scoring.
The hosts broke forward and Jeremy Doku cut it back for De Bruyne to find the bottom corner.
Wolves struggled to get out of their half for the rest of the first 45, but held on to half-time losing 1-0.
Kevin De Bruyne of Manchester City passes the ball under pressure from Joao Gomes (Photo by Carl Recine/Getty Images)
The second half began in much the same way, until Wolves tried to inject some urgency and Cunha hit the post from a tight angle.
Joao Gomes then lost the ball cheaply and City advanced, but Toti Gomes stopped De Bruyne in the box with a superb sliding tackle.
Wolves were struggling for any attacking outlet as City easily dealt with all forays forward.
The game ended with Wolves limping over the line and their first loss since the end of February.
Key Moments
GOAL 35 De Bruyne fires City into the lead
Teams
Wolves: Sa, Semedo (Bueno, 86), Doherty (R.Gomes, 66), Agbadou, Toti, Ait-Nouri, Andre (Guedes, 80), J.Gomes, Bellegarde (Sarabia, 66), Munetsi, Cunha (Hwang, 86).
Subs not used: Bentley, Djiga, Lima, Doyle.
Manchester City: Ederson, Nunes, Dias, Gvardiol, O’Reilly (Akanji, 58), Kovacic (Nico, 93), Gundogan (McAtee, 83), Silva, De Bruyne (Foden, 83), Doku, Marmoush (Lewis, 83).
Subs not used: Ortega, Grealish, Savinho, Haaland.