- Rúben Dias (13' OG)
- Hwang Hee-Chan (66')
- Julián Álvarez (58')
The defeat at Molineux was City's second loss in five days, after Newcastle United dumped them out of the Carabao Cup, and dashed the leaders' hopes of stretching their season-opening run to seven league wins in a row.
A Rúben Dias own goal sent Wolves 1-0 up in the 13th minute, Pedro Neto's cross deflected in off the Portugal defender's s knee, but Julián Álvarez levelled the score with a bending free kick past José Sá in the 58th.
Hwang restored the home side's lead on the counter-attack and against the run of play in the 66th minute by firing into the net from close range after a Matheus Cunha pass found him unmarked.
"We know that we could have the opportunity on the counter," Neto said. "We are playing against the best team in the world but we had belief that this could be a turning point for us. We work hard and we take the three points."
With City manager Pep Guardiola serving a touchline ban for his third yellow card of the season, and midfielder Rodri serving a three-match ban, the visitors were shut out by determined and hard-working opponents.
The Premier League's top scorer Erling Haaland, rested for City's Carabao Cup third-round loss, was a marginalised figure and only had 15 touches of the ball.
The champions had conceded only three goals in their previous six matches.
Wolves, who had lost four of their last six league games, moved up to 13th thanks to their second win of the season.
"It was a massive result for us today. We have not started well but to beat the champions was unbelievable," Wolves captain Max Kilman said in an interview with the BBC.
"We knew it was a big game but we were ready to attack Man City. We wanted to fight for every chance and take our moments."
The game started with an immediate edge as Matheus Nunes, who joined City from Wolves at the end of the transfer window after forcing a move by refusing to train, was in the starting lineup.
The Portugal midfielder was booed by the crowd every time he touched the ball and was replaced at halftime.
- Craig Pawson
|Brighton & Hove Albion||14||6||4||4||+4||22|
|West Ham United||14||6||3||5||0||21|