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.