John Carew and substitute Shaun Maloney were on target as Aston Villa piled on the misery for Manchester City.
Carew (left) celebrates his opener at Eastlands
Carew neatly headed in Ashley Young's teasing right-wing cross to give Villa a deserved lead.
Joey Barton wasted a great chance to draw City level from the spot but he blazed over after keeper Thomas Sorensen felled Darius Vassell.
Villa sealed the points after the break when Maloney curled home a free-kick into the bottom corner from 20 yards.
City fans reacted furiously, booing their side off after another dismal Eastlands display.
Stuart Pearce's side have not scored a home league goal since New Year's Day and Barton's penalty aside they rarely looked like changing that sorry statistic.
But the early signs were encouraging.
City made a lively start following a minute's applause for former manager Alan Ball, who died last week, but the home side were soon on the back foot.
Barton shot meekly at Sorensen early on but the visitors quickly settled.
Gabriel Agbonlahor shot tamely at keeper Andreas Isaksson and Craig Gardner sent a looping effort wide of the far post
Villa's confidence was growing and they deservedly took the lead when Young teased Nedum Onuoha on the right flank and eventually crossed to the near post where Carew flicked a fine header into the far corner.
And the visitors should have been two up soon after when a superb quickly taken free-kick allowed Agbonlahor the freedom of the City penalty box but he sent his header a fraction wide from eight yards out.
City were handed a glorious chance to draw level in first half injury-time.
Sorensen pushed a Barton shot away for a corner and from the resulting set-piece the Dane flattened Vassell as he tried to gather a high ball.
Referee Mark Halsey awarded the spot-kick which Barton duly ballooned high into the crowd.
The half-time whistle which followed was met with the inevitable chorus of boos from a disillusioned set of fans and things did not get any better on the restart.
Georgios Samaras headed wastefully wide after the break and Sylvain Distin also had a half-chance with a header.
City's best opening fell the way of Emile Mpenza who was unable to find a way past the imposing figure of Sorensen after being sent clear.
But Villa looked comfortable and with the pace of Young and Agbonlahor they always looked more likely to grab a second on the break.
There had several promising openings to wrap up the win before Maloney curled a free-kick over the wall and into the bottom corner and City's fans began streaming out of the ground.
Manchester City manager Stuart Pearce:
"We had opportunites to score without a doubt but when the pressure is on it's more difficult at home.
"We are bitterly disappointed and I can understand the fans' frustration.
"We started well but they scored and we were a bit shell-shocked. Once the game got stretched they looked more likely to score than we did."
Aston Villa boss Martin O'Neill:
"I'm very pleased. We started off quite slowly and they were bright and lively but we weathered that spell and got in front and then we played really well.
"We looked dangerous and looked like we were going to score another couple of goals. We scored on maybe our second attack but once we scored we had reasonable control.
"We've won three consecutive away games and there are encouraging signs for next season. We've come roaring back at the end of the season and it stands us in good stead for next season."
Man City: Isaksson, Onuoha (Jihai 46), Dunne, Distin, Ball, Hamann (Sinclair 68), Barton, Ireland, Vassell, Samaras, Mpenza.
Subs Not Used: Weaver, Dabo, Trabelsi.
Aston Villa: Sorensen, Bardsley, Mellberg, Laursen, Bouma, Gardner, Petrov, Barry, Young, Carew (Maloney 71), Agbonlahor (Moore 86).
Subs Not Used: Taylor, Cahill, Berger.
Goals: Carew 24, Maloney 75.
Ref: M Halsey (Lancashire).