Steven Gerrard completed Liverpool's second-half comeback as they came from behind to beat a battling City side.
Nicolas Anelka put City ahead against the run of play after Jerzy Dudek dropped the ball at his feet.
But Gerrard sent Milan Baros clear to equalise with a cool finish, and Liverpool pressed forward for more.
David James made several superb stops before Gerrard swept home the winner, and City's misery was complete when Richard Dunne was sent off late on.
New Liverpool boss Rafel Benitez had seen his side enjoy the lion's share of the early possession on his Anfield bow.
But their probing play struggled to break down a determined City defence.
The home side's best early chance came in the 11th minute when Gerrard fired in a long-range drive that James collected comfortably.
City continued to defend in numbers and chances were few and far between at either end until Harry Kewell's dipping shot which dropped just over James' crossbar on 29 minutes.
Kewell tested James again soon after with a low shot through a crowd which the England keeper did well to push wide.
The Reds were piling on the pressure, and from the ensuing corner Sami Hyypia had a clear sight of goal but could not keep his shot down.
City did not threaten until the 37th minute when Antoine Sibierski met Anelka's corner but could not direct his header goalwards.
And yet it was the visitors who snatched the lead on the stroke of half-time thanks to an error by Liverpool keeper Dudek.
Jamie Carragher headed Shaun Wright-Phillips' chipped through ball back to Dudek but the keeper fumbled and allowed Anelka to steal in and slot home.
But City's lead only lasted until three minutes after the restart.
Gerrard's clever pass set Baros free in the area and he beat James with a composed finish.
Anelka almost restored their lead when he latched on to Reyna's flick - his first-time shot flying inches over.
City were looking comfortable despite Liverpool enjoying the majority of possession, but the home side burst into life in the closing 20 minutes.
In a whirlwind spell of pressure, Gerrard tested James with a powerful drive that James somehow pushed away.
Then a sweeping move forward sent Djibril Cisse running clear but James came out well to smother his shot.
And seconds later James was City's saviour again with another superb stop to deny Baros who was clean through after Dunne's slip.
But a second Liverpool goal looked inevitable and it duly came on 75 minutes.
A long ball forward sent Baros scampering away once more and although James did well to block his effort, the ball fell kindly to Gerrard who swept the ball home.
City's misery was complete when Dunne was sent off for a second booking after a foul on Cisse in the 85th minute.
Liverpool: Dudek, Josemi (Diao 61), Hyypia, Carragher, Riise,
Finnan (Warnock 77), Hamann, Gerrard, Kewell (Biscan 90),
Subs Not Used: Sinama Pongolle, Harrison.
Goals: Baros 48, Gerrard 75.
Man City: James, Thatcher, Distin, Dunne, Mills,
Sibierski (Barton 82), Bosvelt (Sinclair 82), Reyna,
Wright-Phillips, Anelka, Fowler.
Subs Not Used: Macken, Jihai, Stuhr-Ellegaard.
Sent Off: Dunne (85).
Booked: Thatcher, Dunne, Bosvelt.
Goals: Anelka 45.
Ref: G Poll (Hertfordshire).