The Spaniard kept his cool to slide home a finish after collecting Raul Jimenez’s pass following a counter-attack to open the scoring at the Etihad.
And he then repeated the trick deep in stoppage time to secure a famous win for Nuno Espirito Santo’s men.
Jimenez and Patrick Cutrone had missed golden chances for Wolves in the first-half, before David Silva hit the bar in the second half for the hosts.
Silva slammed a free-kick against the bar from 20 yards out but it was a rare scare for Wolves, who defended superbly throughout.
Much of the post-match narrative, on a national level, will focus on a sluggish display by the hosts, who lost on their own patch for the first time since losing 3-2 to Crystal Palace last December.
But there can be no doubt about just how well Wolves performed. Nuno’s men might have been three goals to the good inside the opening 22 minutes after Cutrone and Jimenez - twice - went through on goal.
As it was they had to wait until the closing stages to break the deadlock but when the chances arrived Traore, who had not scored for 45 matches, took them clinically.
The result moves Wolves up to 11th in the Premier League table and caps a brilliant week which had already seen them beat both Watford and Besiktas.
The latter, in the Europa League, was hailed as a famous win. This, however, was arguably the finest moment of Nuno’s reign to date.
Nuno made four changes from the team which won 1-0 in Turkey on Thursday night.
It included recalls for Ruben Vinagre and Patrick Cutrone, both of whom started in the Premier League for the first time since last month’s 3-2 defeat at Everton.
Leander Dendoncker and Traore were also re-introduced to the line-up, with Matt Doherty, Morgan Gibb-White and Jonny Otto all dropping to the bench.
There was no place in the squad for Pedro Neto, while Diogo Jota again missed out through injury.
Wolves were forced into an early change in the 13th minute when Romain Saiss was forced off and replaced by Ryan Bennett. By that point, the visitors might already have been in front.
City were quickly on the front foot during an opening half in which they would have more than 70 per cent possession.
But the best chances, by far, fell to Wolves. Nuno’s men could, quite easily, have been three goals to the good inside 22 minutes. Instead, all three golden chances they had to score went begging.
The first - and the best - fell to Cutrone. Traore’s through ball from the right flank pierced the home defence and the Italy international found himself racing clear on goal. With just Ederson to beat, however, his finish flew horribly wide of the target.
It quickly transpired Wolves’ best tactic was to sit back and wait for the City mistakes. Riyad Mahrez promptly served up another big chance when his wayward pass set Jimenez running at the defence. The Mexican turned inside Nicolas Otamendi but saw his shot blocked by Fernandinho, the City man then doing the same to Cutrone’s follow-up.
Remarkably, Jimenez would get an even better chance three minutes later. This time it was Otamendi who gave the ball away and the Wolves striker was able to outpace Fernandinho, only to lose his footing at the vital moment.
At the other end, Raheem Sterling forced Rui Patricio into a flying save with a shot on the turn from 20 yards out.
But otherwise, for all their possession, the hosts could find no way through a disciplined backline.
Guardiola brought Oleksandr Zinchenko off the bench at half-time and introduced Bernardo Silva early in the second half but the hosts remained laboured and frustrated, with both Rodrigo and Joao Cancelo booked in quick succession.
The Wolves goal was not seriously threatened until nearly midway through the second half when Ruben Neves brought down Sergio Aguero 20 yards out and David Silva curled the free-kick off the bar.
Wolves had another escape when Gabriel Jesus, City’s third and final substitute, found space and found Cancelo on the overlap. His pull back fell perfectly for Bernardo Silva but the shot hit Aguero three yards out.
The visitors remained a threat on the break and with 10 minutes to go, they took the lead. Neves won the ball deep in City’s half and started the move which ended with Jimenez gliding past Otamendi before squaring to Traore, who kept his cool to slide the finish under Ederson.
City almost levelled immediately but Patricio displayed superb reflexes to claw Aguero’s header away.
The hosts could find no way through and with stoppage time almost up, Traore made the game safe, scampering on to another Jimenez pass before again slotting home.
5 - Patrick Cutrone spurns a golden chance to put Wolves ahead. Adama Traore’s through ball goes through the City defence and puts the Italy international clear but he slices the finish well wide.
19 - Another big chance for Wolves. Riyahd Mahrez’s loose pass puts Raul Jimenez and he turns inside Otamendi, only to see Fernandinho block his shot and Cutrone’s follow up.
22 - Wolves are in again and again they can’t make it count. This time Otamendi’s backpass puts Jimenez clear but he tumbles just as he is about to shoot.
65 - OFF THE BAR Ruben Neves brings down Sergio Aguero just outside the box and David Silva curls the free-kick off the bar.
80 - GOAL Wolves lead! Jimenez runs at the home defence and glides past Otamendi, before squaring to Traore, who keeps his cool to slide a finish under Ederson.
81 - A flying save from Rui Patricio is required to preserve the lead. The keeper dives to his right to keep out Sergio Aguero’s header.
90+4 GOAL Adama Traore seals the win, scampering on to another Jimenez pass before firing home.
Man City (4-3-3): Ederson, Walker (Zinchenko HT), Otamendi, Fernandinho, Cancelo, Rodrigo, Gundogan, Silva D, Mahrez (Silva B 60), Aguero, Sterling Subs not used: Jesus, Angelino, Foden, Garcia, Bravo (gk).
Wolves (3-5-2): Patricio, Boly, Coady, Saiss (Bennett 13), Adama, Moutinho, Neves, Dendoncker, Vinagre (Jonny 74), Jimenez, Cutrone (Doherty 68) Subs not used: Vallejo, Gibbs-White, Kilman, Ruddy (gk).