City looked as though they would make light of the 12th-minute red card shown to goalkeeper Ederson for a foul on Diogo Jota when Raheem Sterling scored twice.
The first came after two dramatic interventions by the video assistant referee, one to award City a penalty, then to rule a retake, both of which Rui Patricio saved before Sterling tapped the rebound from the second kick into an empty net.
But Wolves, roared on by a passionate crowd, levelled through Adama Traore and Raul Jimenez before Matt Doherty won it with a shot from the edge of the area in the final minute.
There were jubilant scenes among the home fans at the final whistle – but the match was overshadowed by an incident which saw objects thrown from the stands as City celebrated their opener.
It seems certain that will lead to further action, as a public announcement needed to be made warning supporters that charges would be brought against anyone caught on CCTV committing an offence.
There was no complaint about the England international’s second goal of the night, though, as he raced on to Kevin de Bruyne’s superb through ball and chipped brilliantly past an advancing Rui Patricio.
It was the first time Sterling had scored two in a league game since the opening day of the season – and City seemed certain to become only the sixth team in Premier League history to win after having a man sent off in the opening 12 minutes.
Instead, it provided the backdrop to a Wolves comeback that will live long in the memory.
Guardiola had brought on Eric Garcia and changed to a three-man defence at the break. It was supposed to repel the twin threat posed by Jimenez’s power and Traore’s pace. But that defence was breached five minutes after Sterling’s second when Traore drove a shot into the bottom corner from the edge of the area.
It was the Spaniard’s third goal of the season against City – only Eden Hazard and Jamie Vardy had previously scored that many against a Guardiola team in a Premier League season.
More was to come. A dreadful loss of possession inside his own area by Benjamin Mendy allowed Traore to cross low for Jimenez, who converted from close range.
Roared on by a partisan crowd and with tensions on the touchline heightening, Wolves won it – with Doherty providing the climax by drilling home from the edge of the area. He raced away to be greeted by ecstatic team-mates as Nuno Espirito Santo and his coaching staff leapt for joy on the touchline.
Both sides must play again within 48 hours of the final whistle at Molineux – a result of the congested festive fixture programme that has brought complaints from both Nuno and Guardiola.
In his pre-match media conference, Guardiola said replacing Sergio Aguero would be one of his hardest tasks as manager.
The City boss was referring to the possibility of the striker’s exit at the end of his contract in 2021. Little did he know then that he would be replacing Aguero against Wolves after just 12 minutes.
Just back from a thigh injury, the Argentine was only playing at Molineux because Gabriel Jesus had been ruled out through illness.
But when Ederson raced out of his penalty area and clumsily brought Jota down, Aguero was the man substituted to allow second-choice keeper Claudio Bravo to come on.
Aguero looked less than impressed, although he got himself off the pitch far quicker than Ederson.
The Brazilian keeper pleaded his case to referee Martin Atkinson, waited for VAR confirmation that the decision was correct, and then hung around some more before eventually heading down the tunnel.
If the VAR intervention for Ederson’s dismissal was fairly straightforward, what happened around City’s opening goal lit the fuse for furious reactions on the pitch and disgraceful scenes off it that led to the public address announcement warning supporters about their behaviour.
The trigger was a tackle on City winger Riyad Mahrez by Wolves defender Leander Dendoncker, which Atkinson ignored as he awarded a goal-kick. VAR had other ideas and decided contact between the pair merited a City penalty.
Sterling took it, Rui Patricio saved to his right and the ball was cleared behind for a corner.
But VAR wasn’t done. Replays showed Wolves skipper Conor Coady had encroached into the penalty area before making the clearance, so a retake was awarded.
On the touchline, Guardiola appeared to be screaming for someone else to take it. The message did not get through. Again Sterling went to Patricio’s right. Again the Wolves keeper saved. But this time the rebound rolled straight back to the City man, who tapped home.
In front of the home dug-out, Wolves assistant boss Rui Silva was furious, ripping off his gloves in a rage before shouting at fourth official Andre Marriner.
The City players celebrated in front of the Jack Hayward Stand. As they did so, missiles were thrown at them, one of which was handed to Atkinson, who in turn, brought it to the touchline for Marriner to pass to Wolves security staff.
It was after that the public announcement came, although this just fueled anti-VAR sentiment among the Wolves fans, who made their feelings clear by chanting “it’s not football any more”.