Champions Manchester City fell eight points behind Liverpool in the title race after suffering a shock home defeat against Wolves.
Adama Traore scored twice in the final 10 minutes as Wolves won in the top flight at Manchester City for the first time since 1979.
Traore scored the first 10 minutes from time as the visitors capitalised on a mistake from Joao Cancelo. He added a second on the break deep into injury time.
City have now dropped five points in their opening four home games of the season, having dropped just three in the whole of last season and seven the year before that.
David Silva came closest for the hosts when he hit the bar with a second-half free-kick. Raheem Sterling also had a shot blocked in the scramble that followed.
It was only the second time in 45 league games that City have failed to score. The last time that happened at home in the league was against Huddersfield in May 2018, by which time they had already won their first title of the Guardiola era.
Traore had not scored since September 2018 but the £18m man made no mistake as Wolves twice broke clear of the home defence. Raul Jimenez provided the assist on both occasions.
It is 20 years since Wolves last beat City away from Molineux and 40 since they did so in the top flight. The impact of this victory could have a significant bearing on the title race, so fine are the margins in the battle between the champions and leaders Liverpool.
City and Wolves had both been engaged in European combat this week – and the fact City were at home, rather than travelling 4,000 miles to Turkey and back – and had an additional two days’ rest, should have given them a clear advantage.
That they failed to make the most of it was almost entirely due to their own failings.
Through either misplaced passes by Riyad Mahrez or Nicolas Otamendi, or the latter man needlessly charging out of position, Wolves forwards were allowed to run free three times in the opening half, straight down the middle of the pitch.
Patrick Cutrone screwed one opportunity badly wide and Jimenez appeared to be clipped in the penalty area by Fernandinho, costing him a shooting chance. In between, Fernandinho, currently operating as a makeshift central defender, denied both men with a magnificent double block.
City thought they had survived the worst. But as they pushed for a winner in the final 10 minutes, their mistakes finally cost them.
This time, Cancelo lost possession, allowing Jimenez to race on. As Otamendi slipped, the Mexican rolled the ball to Traore, who finished cleanly.
As City’s desperation increased, Traore’s pace was too much for them. And in the final minute of stoppage time, Jimenez again fed the £18m signing from Middlesbrough, who completed his first double since February 2018, when he was still on Teesside.
This was the day when City’s injury problems finally caught up with them. It is tempting to dismiss Guardiola’s travails as first-world issues.
After all, City were able to give a full Premier League debut to Cancelo, who cost £60m to sign from Juventus in the summer, and could afford to leave Bernardo Silva and Gabriel Jesus on the bench.
Nevertheless, without Kevin de Bruyne and Leroy Sane, they are being robbed of creativity and the absence of central defenders Aymeric Laporte and John Stones denies them continuity. It already feels as though the problems they face in this title battle are insurmountable.
Cancelo’s selection at left-back meant Guardiola had picked four different players in that single position in the last four games. One of them, Benjamin Mendy, has not started back-to-back Premier League games for 11 months and is facing another spell on the sidelines after suffering a hamstring injury in training.
Cancelo did OK during the opening period. Evidently, that was not good enough for Guardiola, who switched the Italian to right-back at the break – sacrificing Kyle Walker in the process three days after he was left out of the latest England squad – and brought Oleksandr Zinchenko on instead.
There was marginal improvement. But it was limited. And that Cancelo made the mistake that gave Wolves the advantage they were never to lose, just highlighted the consequences of the City weakness that has been exposed.