Leandro Bacuna and Andreas Weimann struck in the space of two second-half minutes as Aston Villa claimed a stunning 3-2 win over Manchester City in the Barclays Premier League.
The hosts had twice trailed after goals from Yaya Toure and Edin Dzeko either side of a Karim El Ahamdi equaliser in a compelling encounter at Villa Park.
However, Bacuna levelled with a fine free-kick after 73 minutes and Weimann added another as Villa, after being outplayed in the first half, turned the game around.
Such an outcome had seemed unlikely at half-time after City had overrun Villa without really hitting top gear.
Even though they did not play with the intensity of last weekend's stunning win over Manchester United, City were troubled so little by Paul Lambert's men.
The second half proved a different story and City, who had been close to full strength, aside from missing striker Sergio Aguero, suffered another awayday nightmare after losing at Cardiff last month.
It was also not the ideal preparation for Wednesday's glamour tie against Bayern Munich in the Champions League.
City dominated the first half and created a succession of chances against a side missing the spark of striker Christian Benteke, who missed the game through injury.
The first chance came in the opening moments as Aleksandar Kolarov burst down the left but James Milner, against his former club, shot well wide from his cross.
Dzeko shot at Brad Guzan after being put in by Samir Nasri, who then had a good effort of his own deflected wide from 18 yards after he was released by Toure.
Dzeko blazed over after a charge from deep by Fernandinho before Alvaro Negredo was denied the chance to shoot in a goalmouth scramble and Kolarov put wide.
Villa had been limited to half-chances with Bacuna twice shooting over from distance and El Ahmadi missing the target from a free-kick.
City upped the tempo in the closing minutes of the first half and Villa breathed a sigh of relief as Ciaran Clark turned a wicked cross from Kolarov over his own bar.
Toure then seemed to take it upon himself to wrest control of the game, having an effort from a corner cleared off the line by Libor Kozak.
The inspirational City midfielder then charged forward, only to have a powerful drive deflected inches wide by Nathan Baker.
The Ivorian's persistence paid off in the final minute of the half as a Nasri corner reached him in front of goal and he diverted in his sixth of the season from eight yards.
City were expected to build on that lead and Negredo almost pounced on a poor backpass from Yacouba Sylla but Guzan was quick off his line to clear.
City were stunned as Villa equalised on 51 minutes, Bacuna cleverly flicking a pass through for El Ahmadi and the Moroccan firing across Joe Hart.
Replays suggested he had been offside but City's complaints fell on deaf ears.
City responded well and went back ahead within five minutes from another corner, this time Dzeko meeting a Nasri cross with a superb glancing header at the near post.
Again City should have gone on to take control, and it seemed they would as they controlled possession.
But the visitors switched off as Weimann ran at their defence and was brought down by Matija Nastasic outside the area.
Bacuna stepped up and brilliantly curled a shot into Hart's top-left corner.
City were still reeling from that when they conceded again two minutes later.
Weimann again raced clear, this time from a long punt upfield from Guzan. Hart rushed out to meet the Austrian but a strong touch took the ball past the goalkeeper and another was not needed as the ball rolled into the net, despite Nastasic's desperate attempts to clear.
City pushed forward in hope of salvaging something from another chastening awayday, and a slick passing move saw Toure tee up Stevan Jovetic - but the substitute's first shot was blocked and his follow-up saved.
City had a last chance from an injury-time corner but Kolarov headed wide.