A slip in midfield from Ciaran Clark led to Carlos Tevez's opener in first-half stoppage time before Edin Dzeko saw his rebound from Yaya Toure's strike ruled out for offside.
The result means that Paul Lambert's side remain in the bottom three, having only picked up one victory in their last 11 league matches.
Roberto Mancini made one change from his team's 2-0 win over Chelsea, replacing Sergio Aguero with compatriot Tevez up front after the former picked up a knee injury in training. Jack Rodwell kept his place in midfield but Gareth Barry returned to the bench after recovering from an ankle injury.
Villa started brightly, causing panic inside the City area when Javi Garcia sliced a clearance from Joe Bennett's cross and a Joe Hart punch went straight up into the air but Kolo Toure eventually cleared the danger.
The hosts' early superiority nearly paid off on 20 minutes when Benteke met Charles N'Zogbia's corner with a powerful header which looked destined for the bottom corner but for Tevez's clearance off the line.
After Edin Dzeko replace the injured Rodwell, however, Mancini's side started to enjoy more possession and Pablo Zabaleta nearly put the visitors in front, latching on to Tevez's through-pass and hammering a superb shot across goal which Guzan managed to flick onto the post.
The keeper was called into action again shortly after, parrying away a 20-yard curling effort from Tevez before diverting away Dzeko's low shot from the right of the area.
City's late first-half dominance finally paid off in stoppage time when Clark slipped in midfield, Dzeko stole the ball and squared it to Tevez, who skipped past Guzan before slotting it past Clark, who had recovered to get back to the line.
|MANCHESTER CITY LATEST
|16/1||Manchester City are 16/1 with BetVictor to win the 2012-13 Premier League
Tevez then spurned a fine opportunity, electing to shoot with Silva free in the area, seeing his shot cleared away by Clark with Guzan beaten.
With City pressing for more, Villa could occasionally find space in behind and, on the hour mark, Andreas Weimann was fired in a cross from the right for Gabriel Agbonlahor but Kolo Toure scrambled it behind.
After Matthew Lowton drilled a 35-yard effort wide, City were denied a second when Yaya Toure's low, left-footed effort from 20 yards was tipped on to the post by Guzan with another stunning fingertip save,but it came to Dzeko, who fired the ball into an empty net only for the flag to go up for offside.
City then forced a corner and Garcia side-footed a volley just wide of the post before Benteke was denied a penalty late on, when it looked as if Nastasic had brought down the defender with a clumsy challenge.
Villa pressed for an equaliser late on but City held on for the win with what was - for the majority of the match - an understated performance.