Mario Balotelli marked his return to Manchester City's starting line-up with the crucial opening goal in their hard-fought win over Wigan.
The Italian striker, out of favour and then injured for most of the last month, gave City the lead against the run of play with 21 minutes left, burying the loose ball after Ali Al Habsi's double save.
James Milner's fierce strike moments later made sure of a victory that keeps City only a point behind Manchester United at the top of the table, but this was a far from straightforward win.
Their unbeaten start to the season looked under serious threat during the second half until Balotelli struck, with the Latics enjoying long spells of pressure.
City, who have struggled for goals and wins on the road this season, looked lethargic and short of ideas for long stages.
And, until Balotelli struck for his first league goal since the end of March, his manager Roberto Mancini cut an increasingly unhappy figure on the touchline.
Mancini's side are rock solid at the Etihad Stadium, but had scored only seven times in their six previous away league games, with their lack of goals costing them vital points in the title race.
Balotelli was initially unable to change that, largely because he received so little in the way of service.
City were wasteful on the ball and misplaced too many passes when they came into Wigan territory. Even David Silva, usually so reliable at finding a team-mate, was lacking his usual zip.
City's hold over Wigan
- 28 November 2012 - Wigan 0 City 2
- 16 January 2012 - Wigan 0 City 1
- 10 September 2011 - City 3 Wigan 0
- 5 March 2011 - City 1 Wigan 0
- 19 September 2010 - Wigan 0 City 2
- 29 March 2010 - City 3 Wigan 0
The champions still had the occasional sight of goal early on and Sergio Aguero and Maicon both flashed shots just wide after escaping down the flanks.
But, until Yaya Toure fought his way down the left by-line on the stroke of half-time and fired in a shot that Al Habsi parried at his near post, the Latics looked comfortable.
Roberto Martinez's side were not just sitting back and soaking up the pressure, either. Joe Hart had to help an Arouna Kone header over the bar and Jordi Gomez sent a free-kick whistling a fraction wide.
City did come out with more purpose after the break, but Balotelli was wasteful when he met Maicon's cross at the back post but sent his header bouncing well wide.
Wigan were still creating the better openings and Kone's finishing was just as poor when he nodded Ronnie Stam's cross wide.
Manchester City are the only team in the top four divisions of English football who have yet to lose a league game in 2012-13.
The Latics went close again after the hour mark when Jean Beausejour's cross flew right across goal and Gomez, arriving late, was unable to steer it goalwards.
By now the home side were on top and a point looked a decent return for City, who would have been mindful of Manchester United's catastrophic defeat here last spring.
They went home with all three, mainly thanks to Balotelli. Gareth Barry's shot from the edge of the area was blocked by Al Habsi and, although the Wigan keeper stopped Balotelli's first follow-up, he could do nothing with his second strike.
The Latics kept coming forward but their hopes of getting anything from the game disappeared when Milner made it 2-0, beating Al Habsi with an unstoppable shot into the top corner.
Live Text Commentary
Full Time The match has reached full-time.90:00 +3:30
Free kick awarded for an unfair challenge on Callum McManaman by Aleksandar Kolarov. James McCarthy takes the free kick.90:00 +2:30 Substitution
Substitution Ronnie Stam leaves the field to be replaced by Callum McManaman.90:00 +2:10
Jordi Gomez produces a left-footed shot from deep inside the penalty box which goes wide of the left-hand post.90:00 +0:32
Ronnie Stam delivers the ball, save made by Joe Hart.89:28
Outswinging corner taken by Aleksandar Kolarov from the left by-line, clearance by Emmerson Boyce.88:43
Matija Nastasic crosses the ball.86:35
Foul by Franco Di Santo on Gareth Barry, free kick awarded. Matija Nastasic restarts play with the free kick.86:02
Foul by Franco Di Santo on Pablo Zabaleta, free kick awarded. Pablo Zabaleta takes the direct free kick.84:38
Foul by Adrian Lopez on Yaya Toure, free kick awarded. Kolo Toure restarts play with the free kick.83:31
David Silva fouled by Maynor Figueroa, the ref awards a free kick. Pablo Zabaleta restarts play with the free kick.82:55
David Silva fouled by Ronnie Stam, the ref awards a free kick. Indirect free kick taken by Joe Hart.82:08
Inswinging corner taken from the left by-line by Jean Beausejour.80:27 Substitution
Substitution (Man City) makes a substitution, with Kolo Toure coming on for James Milner.79:00
Effort on goal by Yaya Toure from inside the box misses to the right of the target.77:28
Sisenando Maicon produces a left-footed shot from deep inside the penalty box which goes wide of the left-hand post.75:29
Handball decision goes against Mario Balotelli. Direct free kick taken by Maynor Figueroa.73:31 Substitution
Substitution James McArthur replaces David Jones.71:36
Assist on the goal came from Gareth Barry.71:36 Goal scored
Goal! - James Milner - Wigan 0 - 2 Man City James Milner gets on the score sheet with a goal from outside the penalty area to the top right corner of the goal. Wigan 0-2 Man City.
Foul by Vincent Kompany on Franco Di Santo, free kick awarded. David Jones takes the direct free kick.68:11
Assist on the goal came from Gareth Barry.68:11 Goal scored
Goal! - Mario Balotelli - Wigan 0 - 1 Man City A goal is scored by Mario Balotelli from inside the six-yard box high into the middle of the goal. Wigan 0-1 Man City.68:05
Gareth Barry takes a shot. Ronnie Stam gets a block in.67:04 Substitution
Substitution Aleksandar Kolarov joins the action as a substitute, replacing Sergio Aguero.67:04
Mario Balotelli challenges Emmerson Boyce unfairly and gives away a free kick. Free kick taken by Ali Al Habsi.65:29
The ball is sent over by Sergio Aguero.63:56
Arouna Kone takes a shot. Pablo Zabaleta gets a block in. Corner taken by David Jones from the right by-line, Joe Hart makes a clearance.63:06 Booking
Booking The referee books Gareth Barry for unsporting behaviour.62:54
Free kick awarded for a foul by Gareth Barry on Jordi Gomez. Direct free kick taken by Emmerson Boyce.60:25
Header from close range by Jordi Gomez misses to the right of the target.58:34 Substitution
Substitution James Milner joins the action as a substitute, replacing Francisco Javi Garcia.58:34
Pablo Zabaleta gives away a free kick for an unfair challenge on Franco Di Santo. Emmerson Boyce takes the free kick.58:06
Ronnie Stam delivers the ball, save made by Joe Hart.56:38
David Silva has an effort at goal from just outside the box which goes wide of the right-hand upright.56:07
Free kick awarded for a foul by Franco Di Santo on Pablo Zabaleta. Free kick taken by Pablo Zabaleta.55:18
Headed effort on goal by Arouna Kone from inside the penalty box misses to the right of the goal.54:41
Jean Beausejour delivers the ball, Matija Nastasic manages to make a clearance.53:13
Foul by Jordi Gomez on David Silva, free kick awarded. Joe Hart restarts play with the free kick.52:49
Corner taken by David Jones from the left by-line.52:38
The ball is delivered by Ronnie Stam, save made by Joe Hart.52:02
Close range headed effort by Mario Balotelli goes wide of the left-hand post.50:25
Yaya Toure produces a right-footed shot from just outside the area that goes harmlessly over the target.49:05
The ball is sent over by Yaya Toure.48:43
David Jones challenges Mario Balotelli unfairly and gives away a free kick. Pablo Zabaleta takes the direct free kick.46:47
Adrian Lopez gives away a free kick for an unfair challenge on Mario Balotelli. Strike on goal comes in from Mario Balotelli from the free kick.45:39
David Silva takes a shot. Save by Ali Al Habsi.45:08
Mario Balotelli takes a shot. Save by Ali Al Habsi.45:01
The second half has started.45:00 +2:34 Half time
Half Time The whistle is blown to end the first half.45:00 +2:05
Yaya Toure takes a shot. Save by Ali Al Habsi.45:00 +1:06
Matija Nastasic takes the free kick.45:00 +1:06 Booking
Booking Jordi Gomez is cautioned.45:00 +0:56
Gareth Barry fouled by Jordi Gomez, the ref awards a free kick.45:00 +0:43
David Jones takes a inswinging corner.44:06
Foul by Vincent Kompany on Arouna Kone, free kick awarded. Maynor Figueroa restarts play with the free kick.42:14
Franco Di Santo takes a shot. Blocked by Pablo Zabaleta. David Jones takes a inswinging corner to the near post, Matija Nastasic makes a clearance.41:07
Inswinging corner taken by David Silva, save by Ali Al Habsi.40:56
Yaya Toure produces a cross, Adrian Lopez makes a clearance.40:06
Maynor Figueroa challenges Mario Balotelli unfairly and gives away a free kick. Free kick taken by David Silva.38:25
Free kick awarded for an unfair challenge on David Jones by Yaya Toure. Ali Al Habsi takes the free kick.35:38
Free kick awarded for a foul by Sergio Aguero on Jordi Gomez. Strike comes in from Jordi Gomez from the free kick.33:12
Header from close range by Arouna Kone clears the bar.32:03
Free kick awarded for an unfair challenge on Jean Beausejour by Sisenando Maicon. Free kick taken by David Jones.30:56
Free kick awarded for a foul by David Silva on Jean Beausejour. Maynor Figueroa takes the free kick.28:43
Inswinging corner taken by Mario Balotelli from the left by-line, Ali Al Habsi manages to make a clearance.28:02
David Silva takes a inswinging corner.27:16
A cross is delivered by Ronnie Stam. Corner from left by-line taken by Jean Beausejour.26:52
Centre by Matija Nastasic, clearance by Adrian Lopez.26:32
The ball is crossed by Yaya Toure.25:27
Corner taken left-footed by David Silva, Franco Di Santo manages to make a clearance.23:24
Ronnie Stam gives away a free kick for an unfair challenge on Mario Balotelli. Free kick taken by Sergio Aguero.22:43
Mario Balotelli sends in a cross, save by Ali Al Habsi.21:23
The ball is sent over by Jean Beausejour, save by Joe Hart.20:39
Sergio Aguero produces a right-footed shot from just outside the box that goes wide left of the target.19:19
Inswinging corner taken left-footed by David Silva from the right by-line, save made by Ali Al Habsi.17:36
The offside flag is raised against Pablo Zabaleta. Ali Al Habsi takes the free kick.16:46
Jean Beausejour takes a shot. Vincent Kompany gets a block in.8:24
Free kick awarded for a foul by David Silva on David Jones. Maynor Figueroa takes the free kick. The referee blows for offside against Franco Di Santo. Sisenando Maicon takes the free kick.7:58
Foul by Matija Nastasic on Arouna Kone, free kick awarded. Direct free kick taken by Ronnie Stam.6:26
Sergio Aguero produces a left-footed shot from deep inside the area which goes wide of the left-hand post.3:45
Effort on goal by Sisenando Maicon from just inside the penalty area goes harmlessly over the target.2:28
Arouna Kone takes a shot. Save by Joe Hart.1:18
Sisenando Maicon sends in a cross.0:57
Foul by Emmerson Boyce on Mario Balotelli, free kick awarded. Direct free kick taken by Yaya Toure.0:00
The game begins.
Live data and text provided by our data suppliers