Villa's brave battling rearguard action crumbled in the face of a second half onslaught as Manchester City took a giant leap towards the Barclays Premier League title.
Paul Lambert's side held firm until the 64th minute before Edin Dzeko opened the scoring, and a carbon copy goal eight minutes later effectively sealed the points for City, who will be crowned champions if they beat West Ham in their final match on Sunday.
Andi Weimann almost reduced the deficit with an 81st-minute header which hit the bar, but late goals by sub Stevan Jovetic and Yaya Toure put home supporters in party mood as their team closed in on a second title in three seasons.
Not surprisingly, Villa were pinned back from the outset as City pressed forward incessantly.
Aleksandar Kolarov's fierce angled drive from the left was beaten away by Brad Guzan after Dzeko had crafted the opening with an unselfish lay-off, and then Vincent Kompany climbed in front of the Villa keeper to head wide from Samir Nasri's corner.
It took a superb reflex save by Guzan to prevent the visitors from falling behind in the 12th minute.
Ex-Villan James Milner set up Zabaleta for a low centre which Toure fired towards the bottom corner from 10 yards.
It looked a certain goal - until Guzan stretched to it beyond the post, with Ryan Bertrand completing the clearance at the expense of a corner.
The game was halted briefly for Jordan Bowery to receive treatment for a bloody nose following an aerial collision with Javi Garcia, but City were soon back on the offensive, Guzan saving at David Silva's feet following a dangerous cross from the left, Nasri curled a shot over from just outside the penalty area and Milner had an effort blocked.
It was tough going for Lambert's side, although Bertrand intercepted a wayward City pass in the 28th minute before picking out Weimann with a superb diagonal pass.
The Austrian attempted a right-foot volley but it didn't carry enough power to trouble Joe Hart.
Even so, that prompted a much better spell from Villa.
Three minutes later Bowery was stretching just too far as he met Weimann's cross and sent his shot tamely wide, and then Weimann went racing clear after Ashley Westwood had cleared from inside Villa's penalty area.
The striker's low shot from 30 yards clipped Zabaleta's heel and went out for a corner.
On 39 minutes, though, the visitors were grateful to Ron Vlaar when the skipper got in the way of Silva's drive following Zabaleta's cut-back, and in first half stoppage time Nasri was just wide from Milner's centre.
City were once again on the front foot at the start of the second half, and Guzan did well to clutch Kompany's close-range overhead kick before Fabian Delph was booked for bringing down Silva 30 yards out.
Kolarov could hardly have struck the resultant free-kick any better but Guzan was well positioned to punch clear.
The home side had been getting increasingly frustrated but they finally made the breakthrough with a well constructed goal.
The eel-like Silva worked his way into a good position before playing a perfect pass to Zabaleta, whose low cross was turned home by Dzeko.
Eight minutes later City doubled their advantage with an almost identical build-up.
Once again Silva pass and Zabaleta's cross created the opening, and although Guzan kept out Nasri's shot with his legs, Dzeko was left with the simple task of tapping in the rebound from a couple of yards.
But after Toure's free-kick had deflected for a corner and Guzan had saved from Jovetic, Villa were desperately unlucky not to score in the 81st minute.
Westwood's deep cross was headed back across the face of goal by sub Callum Robinson, and Weimann's close-range header came down off the underside of the bar.
But no-one could deny City their victory, and in the 89th minute Jovetic stroked home their third before Toure powered his way through for number four in stoppage time.
Man City: Hart; Zabaleta, Kompany, Demichelis, Kolarov; Toure, Garcia; Milner (Jovetic 60), Silva (Fernandinho 76), Nasri; Dzeko (Negredo 86) . Unused subs: Pantilimon, Lescott, Richards, Clichy.
Villa: Guzan; Lowton, Vlaar, Baker, Clark (Robinson 79), Bertrand (Grealish 87); El Ahmadi, Westwood, Delph; Bowery (Bacuna 59), Weimann. Unused subs: Steer, Sylla, Tonev, Holt.