Manchester City closed the gap on leaders Manchester United to 12 points with victory at Aston Villa, who remain in the Premier League relegation zone.
The game's key moment came in first-half injury time as Ciaran Clark's failed attempt to turn Edin Dzeko saw the defender robbed of the ball.
The Bosnian selflessly played in Carlos Tevez to round Brad Guzan and score.
City took charge after the break and came closest to doubling their lead when Yaya Toure struck the post.
Roberto Mancini's side thrashed Villa 5-0 at Etihad Stadium in November but there was no sign of any such disparity in the early stages as the hosts threatened with a number of dangerous crosses towards giant striker Christian Benteke.
One such delivery saw Tevez, in the City starting line-up for injured compatriot Sergio Aguero, clear off the line as Charles N'Zogbia's in-swinging corner was met with a powerful header by Benteke.
The visitors finally began to exert control after midfielder Jack Rodwell was forced off with his latest injury set-back, to be replaced by Dzeko, and Yaya Toure was dropped back to provide a commanding presence at the base of the City midfield.
Villa v City at a glance
- Roberto Mancini's side have conceded fewer goals than any other Premier League team this season (24)
- Villa have not won any of the 14 league matches this season when they've conceded the opening goal (D2, L12).
- Mancini became the first Manchester City manager to take charge of 125 Premier League matches for the club. His current record is: W77, D26, L22.
The champions began to gain more possession, and an intricate move involving David Silva produced a fingertip save from Villa goalkeeper Guzan, the American pushing full-back Pablo Zabaleta's goal-bound shot on to the post.
Villa looked on course to finish the first half on level terms until a disastrous mistake from centre-back Clark ended with Tevez opening the scoring.
As the visiting players celebrated, Villa's stand-in captain protested he had been fouled by the Bosnian and replays seemed to back up his argument, though the 23-year-old had shown his inexperience by attempting to play his way out from the back when a simple clearance was required.
The error typified a frailty in defence that has been apparent throughout Villa's now 17-game run without a clean sheet in all competitions.
Clark's mistake was repeated by Matthew Lowton after the break as Dzeko dispossessed the full-back on the edge of the Villa penalty area.
He picked out Tevez once more but, crucially, Lowton was able to get back and block the Argentine's effort with Guzan beaten.
Villa's best hope of an equaliser was on the counter-attack and a quick break saw centre-back Kolo Toure produce a fine defensive header to deny Gabriel Agbonlahor.
But that was a rare foray forward for the hosts and Yaya Toure came close to doubling the lead when he hit the base of the post with a curled effort from the edge of the box. Dzeko fired the rebound into the roof of the net but his effort was rightly ruled out for offside.
Urged on by the home support, Villa tried to build some pressure as the game entered its final stages. Their feebleness in attack, however, was summed up by a sliced corner from Lowton two minutes into injury time that went straight out for a goal kick.
A further blow was to follow as midfielder Fabian Delph, an industrious presence against City, picked up his 10th booking of the season and will now miss Villa's crucial games against relegation rivals Reading and Queens Park Rangers.
Aston Villa boss Paul Lambert:
"I thought we were well in the game. The goal is a mistake. I wouldn't have minded if someone had put one in the top corner with a bit of skill.
"But it's a mistake by us. It is easy to be critical of Ciaran. The lad has been excellent all season. He will learn from it, he won't make the same mistake again."
Manchester City boss Roberto Mancini:
"I think the performance was difficult as Aston Vila are a good team, it is strange they are at the bottom.
"It was important to get a clean sheet and the win. We had four or five incredible chances to score and their keeper saved everything.
"When Edin Dzeko plays like tonight, fighting for every ball, I like it. He could be important."
- 22 Guzan
- 06 Clark
- 27 Bennett
- 32 Baker
- 34 Lowton
- 10 N'Zogbia (Holman - 65' )
- 15 Westwood (El Ahmadi - 85' )
- 16 Delph Booked
- 11 Agbonlahor
- 20 Benteke Booked
- 26 Weimann (Dawkins - 84' )
- 01 Given
- 30 Lichaj
- 08 El Ahmadi
- 18 Sylla
- 24 Dawkins
- 14 Holman
- 21 Bowery
- 01 Hart
- 05 Zabaleta
- 22 Clichy
- 28 K Toure
- 33 Nastasic
- 07 Milner
- 14 Garcia
- 17 Rodwell (Dzeko - 25' )
- 21 Silva (Barry - 90' )
- 42 Y Toure
- 32 Tevez (Nasri - 75' )
- 30 Pantilimon
- 06 Lescott
- 13 Kolarov
- 08 Nasri
- 11 Sinclair
- 18 Barry
- 10 Dzeko
Live Text Commentary
Full Time The game is over, as the referee blows his whistle.90:00 +3:25
Pablo Zabaleta takes the direct free kick.90:00 +3:25 Booking
Booking Fabian Delph is cautioned.90:00 +3:18
Handball decision goes against Fabian Delph.90:00 +3:07
Centre by Fabian Delph, clearance by Gareth Barry.90:00 +2:53
Simon Dawkins takes a shot. Blocked by Kolo Toure.90:00 +1:59
Outswinging corner taken right-footed by Matthew Lowton.90:00 +1:18
The ball is delivered by Brett Holman, clearance made by Kolo Toure.89:33 Substitution
Substitution David Silva leaves the field to be replaced by Gareth Barry.88:30
James Milner delivers the ball, Bradley Guzan makes a comfortable save.87:07
The ball is swung over by Karim El Ahmadi.86:14
Gabriel Agbonlahor sends in a cross, clearance made by Matija Nastasic.84:50 Substitution
Substitution Karim El Ahmadi is brought on as a substitute for Ashley Westwood.83:50
Samir Nasri has an effort from just inside the box that misses to the left of the goal.82:32 Substitution
Substitution Simon Dawkins joins the action as a substitute, replacing Andreas Weimann.82:32
Corner from the right by-line taken by David Silva, Francisco Javi Garcia produces a volleyed right-footed shot from deep inside the penalty area which goes wide of the right-hand post.82:07
A cross is delivered by Joe Bennett, Christian Benteke takes a shot. Comfortable save by Joe Hart.79:35
A cross is delivered by Joe Bennett. Effort from deep inside the area by Andreas Weimann clears the bar.75:37
A cross is delivered by James Milner, Ciaran Clark makes a clearance. Inswinging corner taken from the left by-line by James Milner, comfortable save by Bradley Guzan.74:11
Free kick taken by Joe Hart.
Substitution Samir Nasri joins the action as a substitute, replacing Carlos Tevez.74:11 Booking
Booking Christian Benteke is booked.74:02
Matija Nastasic fouled by Christian Benteke, the ref awards a free kick.72:46
Edin Dzeko has an effort at goal from the edge of the area that misses to the right of the target.71:44
Yaya Toure takes a shot from just outaide the penalty box and strikes the post. Edin Dzeko is flagged offside by the assistant referee. Bradley Guzan takes the indirect free kick. The referee gives a free kick against Christian Benteke for handball. Kolo Toure takes the direct free kick.70:31
Pablo Zabaleta gives away a free kick for an unfair challenge on Joe Bennett. Bradley Guzan takes the free kick.69:56
Unfair challenge on Edin Dzeko by Nathan Baker results in a free kick. Yaya Toure takes the direct free kick.69:10
Andreas Weimann fouled by James Milner, the ref awards a free kick. Ashley Westwood crosses the ball in from the free kick, Francisco Javi Garcia makes a clearance.69:01
Joe Bennett delivers the ball.67:21
The ball is crossed by Matthew Lowton, blocked by Francisco Javi Garcia. Outswinging corner taken from the right by-line by Ashley Westwood, clearance made by Pablo Zabaleta.65:49
Long range shot from Matthew Lowton misses to the left of the target.65:27
The ball is crossed by Gabriel Agbonlahor, clearance by Matija Nastasic.64:36
Bradley Guzan takes the direct free kick.64:36 Substitution
Substitution Brett Holman comes on in place of Charles N'Zogbia.64:36
Free kick awarded for an unfair challenge on Matthew Lowton by James Milner.63:06
Yaya Toure fouled by Nathan Baker, the ref awards a free kick. Carlos Tevez produces a shot on goal direct from the free kick, blocked by Matthew Lowton.62:10
Fabian Delph challenges James Milner unfairly and gives away a free kick. James Milner restarts play with the free kick.61:55
Matthew Lowton crosses the ball, save by Joe Hart.61:33
Charles N'Zogbia takes a outswinging corner from the left by-line played to the near post.60:45
Andreas Weimann sends in a cross, Gabriel Agbonlahor takes a shot. Blocked by Kolo Toure. Outswinging corner taken left-footed by Charles N'Zogbia, Edin Dzeko makes a clearance.60:07
Carlos Tevez has an effort at goal. Blocked by Ciaran Clark.57:59
Free kick awarded for a foul by Matija Nastasic on Christian Benteke. Ashley Westwood takes the free kick.57:07
Gael Clichy delivers the ball, Edin Dzeko takes a shot. Nathan Baker gets a block in.55:57
The official flags Charles N'Zogbia offside. Francisco Javi Garcia restarts play with the free kick.55:21
The ball is crossed by Matthew Lowton, comfortable save by Joe Hart.54:10
Carlos Tevez takes a shot. Clearance made by Matthew Lowton.52:12
Unfair challenge on Gabriel Agbonlahor by Yaya Toure results in a free kick. Nathan Baker takes the free kick.51:38
Pablo Zabaleta fouled by Gabriel Agbonlahor, the ref awards a free kick. Free kick taken by Kolo Toure.51:00
Carlos Tevez produces a right-footed shot from a long way out which goes wide right of the goal.49:46
Francisco Javi Garcia challenges Christian Benteke unfairly and gives away a free kick. Free kick taken by Ashley Westwood.47:34
The ball is delivered by Carlos Tevez, Effort from deep inside the area by Matija Nastasic clears the bar.46:50
The ball is delivered by Carlos Tevez, Edin Dzeko takes a shot. Fabian Delph gets a block in. Inswinging corner taken by James Milner from the left by-line, save by Bradley Guzan.45:53
Pablo Zabaleta takes a shot from 20 yards. Nathan Baker gets a block in.45:01
The match restarts for the second half.45:00 +2:39 Half time
Half Time The players leave the pitch at half time.45:00 +2:11
The ball is sent over by Joe Bennett, Shot by Andreas Weimann. Gael Clichy gets a block in.45:00 +0:11
Edin Dzeko provided the assist for the goal.45:00 +0:11 Goal scored
Goal! - Carlos Tevez - A Villa 0 - 1 Man City Carlos Tevez grabs a goal from inside the six-yard box to the bottom left corner of the goal. Aston Villa 0-1 Man City.44:36
Gael Clichy crosses the ball, save by Bradley Guzan.43:42
Andreas Weimann crosses the ball.42:32
Christian Benteke fouled by Kolo Toure, the ref awards a free kick. Ciaran Clark takes the direct free kick.42:15
James Milner sends in a cross, clearance by Nathan Baker.41:29
Effort by Ashley Westwood from a long way out goes over the target.40:25
Edin Dzeko has an effort at goal. Save made by Bradley Guzan.39:59
Effort from 25 yards by Carlos Tevez. Save by Bradley Guzan.38:58
James Milner has an effort at goal from the edge of the box that misses to the right of the target.38:27
Corner taken short by James Milner.37:31
The referee blows for offside against Christian Benteke. Francisco Javi Garcia restarts play with the free kick.37:13
The ball is crossed by James Milner, save made by Bradley Guzan.36:41
Pablo Zabaleta takes a shot. Save by Bradley Guzan.35:00
A cross is delivered by James Milner, Ciaran Clark manages to make a clearance.33:57
Christian Benteke gives away a free kick for an unfair challenge on Kolo Toure. Kolo Toure restarts play with the free kick.33:24
Charles N'Zogbia fouled by Carlos Tevez, the ref awards a free kick. Ciaran Clark takes the direct free kick.33:02
A cross is delivered by Edin Dzeko, Matthew Lowton makes a clearance.31:01
Ciaran Clark challenges Carlos Tevez unfairly and gives away a free kick. Direct effort from the free kick comes in from James Milner, save made by Bradley Guzan.30:44
Foul by Christian Benteke on Francisco Javi Garcia, free kick awarded. Free kick taken by Kolo Toure.30:00
Foul by Carlos Tevez on Charles N'Zogbia, free kick awarded. Free kick taken by Bradley Guzan.26:52
The referee blows for offside. Free kick taken by Kolo Toure.25:47
Edin Dzeko gives away a free kick for an unfair challenge on Matthew Lowton. Direct free kick taken by Bradley Guzan.25:21
Free kick awarded for a foul by Charles N'Zogbia on Yaya Toure. Gael Clichy takes the direct free kick.24:36 Substitution
Substitution Edin Dzeko is brought on as a substitute for Jack Rodwell.24:12
Centre by Andreas Weimann.23:41
Foul by David Silva on Nathan Baker, free kick awarded. Free kick taken by Fabian Delph.21:04
Effort on goal by Matthew Lowton from outside the box goes harmlessly over the bar. Jack Rodwell takes a shot. Save made by Bradley Guzan. Inswinging corner taken right-footed by James Milner from the left by-line, Unfair challenge on Ciaran Clark by Jack Rodwell results in a free kick. Bradley Guzan takes the free kick.20:07
Outswinging corner taken by Charles N'Zogbia from the left by-line, Christian Benteke takes a shot. Carlos Tevez manages to make a clearance.16:14
Matthew Lowton delivers the ball, Francisco Javi Garcia makes a clearance.15:09
Joe Bennett produces a cross, Gael Clichy makes a clearance.13:22
Unfair challenge on Gabriel Agbonlahor by Pablo Zabaleta results in a free kick. Joe Bennett restarts play with the free kick.10:46
Jack Rodwell produces a left-footed shot from outside the penalty box and misses wide left of the target.9:41
The ball is sent over by David Silva, Ciaran Clark makes a clearance.9:24
Matthew Lowton delivers the ball, clearance by Kolo Toure.7:26
Unfair challenge on Charles N'Zogbia by Francisco Javi Garcia results in a free kick. Free kick taken by Bradley Guzan.5:20
The ball is crossed by Joe Bennett, blocked by Yaya Toure. Outswinging corner taken right-footed by Ashley Westwood, Header on goal by Christian Benteke from inside the box goes harmlessly over the target.5:09
The ball is delivered by Matthew Lowton, clearance made by Pablo Zabaleta.4:58
The ball is sent over by Gabriel Agbonlahor, Kolo Toure makes a clearance.2:42
A cross is delivered by Joe Bennett, clearance made by Francisco Javi Garcia.0:11
Foul by Gabriel Agbonlahor on Pablo Zabaleta, free kick awarded. Pablo Zabaleta takes the free kick.0:00
The match has kicked off.
Live data and text provided by our data suppliers