A superb first-half display by Shaun Wright-Phillips helped City triumph against a battling Southampton side.
Wright-Phillips earned the corner that led to Paul Bosvelt nodding City ahead from Richard Dunne's knockdown.
The England winger scored his side's second goal himself - beating Antti Niemi with a thumping 30-yard shot.
Southampton improved after the break and pulled a goal back from the spot late on through Kevin Phillips after Sylvain Distin fouled Peter Crouch.
Wright-Phillips had looked lively in the opening stages without making the most of his possession - his best moment coming with a shot which he dragged narrowly wide.
But another dangerous run led to City's opening goal on 19 minutes.
Martin Cranie blocked Wright-Phillips' cross and, from the resulting corner, Dunne headed the ball back across goal for Bosvelt to nod into the corner from four-yards out.
City continued to press and had two chances to add to their lead.
After Rory Delap had given the ball away to Robbie Fowler, Anelka shot tamely at Niemi.
Then Wright-Phillips galloped clear down the right and cut into the box before forcing Niemi into an acrobatic save.
With Southampton unable to keep hold of the ball on a treacherous pitch, a second City goal looked inevitable.
It almost arrived when Wright-Phillips found Fowler in the box with a looping cross, but Danny Higginbotham got back to clear his goalbound header off the line.
Saints almost snatched an equaliser when Neil McCann burst into the City penalty area.
But David James was alert to block his run and Phillips could not convert the follow-up.
City's response was to push forward again - and on 40 minutes Wright-Phillips got the goal he deserved.
He picked up Niemi's clearance, beat two men before unleashing a wicked drive that flew into the net via a post.
Southampton made two changes at the break, bringing on Crouch and Fabrice Fernandes for Brett Ormerod and Matt Oakley.
Crouch had an immediate effect, unsettling the City defence with his height as the Saints went for a direct approach.
Phillips also began to show signs of life and was allowed space and time on the ball as the visitors came back into the game.
City eventually got the ball in net just after the hour mark only for the goal to be controversially ruled out for offside.
A Fernandes cross flicked off Crouch's head and was gleefully converted from close range by Phillips only for his celebrations to be cut short by an offside flag.
Even that scare did not wake City from their lethargy - and they had to rely on James to keep Southampton at bay.
He dealt with a barrage of crosses and also saved spectacularly from Crouch after McCann's flick left the striker with time to pick his spot.
Southampton's second-half display merited a goal - and they got it from the penalty spot in injury time.
Distin's nudge on Crouch was enough to send the striker tumbling in the box and Phillips converted the penalty, firing into the roof of the net.
Man City: James, Mills, Distin, Dunne, Thatcher (Onuoha 78),
Shaun Wright-Phillips, Barton, Bosvelt, Sibierski,
Fowler (McManaman 86), Anelka (Macken 69).
Subs Not Used: Waterreus, Flood.
Goals: Bosvelt 19, Shaun Wright-Phillips 40.
Southampton: Niemi, Telfer, Jakobsson, Higginbotham, Cranie,
McCann, Oakley (Crouch 45), Prutton, Delap,
Ormerod (Fernandes 45), Phillips.
Subs Not Used: Dodd, Anders Svensson, Smith.
Goals: Phillips 90 pen.
Ref: C Foy (Merseyside).