Late goals from Ali Benarbia and Marc-Vivien Foe wrapped all three points for Man City at Maine Road as Aston Villa woeful away form continued.
Foe's 80th-minute strike - his second of the game and fifth goal in four matches - put the seal on a hard-earned victory after a good display from Kevin Keegan's men.
Key moments
The Cameroon international put City into the lead after 15 minutes, but his team did not take full advantage of their early dominance and allowed Dion Dublin to equalise in the 40th minute.
The game looked to be heading for a draw until the late interventions from Benarbia and Foe left Villa still searching for their first away win of the Premiership season.
"
Before Bernarbia went on I asked him to give me a bit of magic
"
Kevin Keegan
City started at full throttle and almost scored in the first minute after an under-hit Thomas Hitzlsperger backpass put Villa keeper Peter Enckelman in trouble but he just managed to get to the ball ahead of Goater.
Anelka and Foe then both went close as City served notice of their attacking intentions.
Villa failed to heed the warning though and Foe put the finishing touch to a lovely passing move involving Anelka and Goater to put City in the lead after 15 minutes.
City could have been left to regret their missed chances though as Villa gradually muscled their way back into the game.
After several poor clearances from Peter Schmeichel's boot put Man City under pressure, a terrible misjudgement from defender Sylvain Distin finally gifted the visitors their equaliser.
The French defender allowed JLloyd Samuel to beat him to a ball on the by-line and the youngster's cut-back found Dublin at close range.
Second-half substitute Benarbia made the difference for City, hitting the bar from 25 yards out within minutes of coming on.
"
We are creating chances, we just aren't taking them
"
Graham Taylor
The Algerian was not to be denied though and he got on the end of Anelka's well-directed cross with an excellent diving header in the 78th minute to put City back in front.
Two minutes later Benarbia issued a beautiful pass behind a static Villa defence which Foe got on the end of to put the game beyond Villa's reach.
Man City: Schmeichel, Dunne, Howey, Distin,
Wright-Phillips (Benarbia 64), Berkovic, Foe, Horlock,
Tiatto (Jensen 46), Anelka, Goater (Huckerby 72).
Subs Not Used: Nash, Wiekens.
Aston Villa: Enckelman, Samuel, Mellberg, Staunton, Barry,
De la Cruz, Kinsella, Hitzlsperger (Leonhardsen 68), Hadji,
Dublin, Vassell (Angel 63), Leonhardsen (Hendrie 89).
Subs Not Used: Postma, Allback.
Booked: De la Cruz.
Attendance: 33,991
Referee: Mark Halsey (England).