City, who had failed to beat Liverpool in their six previous League games in which they had also failed to score a goal, had looked set to end that dismal sequence after establishing a two-goal first-half lead.
Stephen Ireland and Javier Garrido, both with spectacular strikes, had put City in a commanding position as they scored Eastlands club's first goals against Liverpool in over nine hours.
But in a dramatic second half Liverpool struck twice through Fernando Torres, before an injury-time winner from Dirk Kuyt secured all three points.
Albert Riera and Kuyt had early chances for Liverpool as the visitors made the brighter start.
But it was City who stole ahead in the 19th minute when Ireland scored his third goal of the season.
Jo, Shaun Wright-Phillips and Robinho were involved in the build-up, which ended with Ireland smashing the ball into the roof of the net from ten yards.
Liverpool were stunned again in the 42nd minute when City doubled their lead through a spectacular 25-yard free-kick from Garrido, the Spanish left-back's first goal for City. The kick had been awarded for a foul by Fabio Aurelio on Wright-Phillips.
Liverpool made an energetic start to the second half and were rewarded when Torres halved the deficit in the 55th minute.
Aurelio provided a low cross from the right and Torres stole ahead of Pablo Zabaleta to scramble the ball home from inside the six-yard box for Liverpool's 1,000th goal in the Premier League.
City ought to have restored a two-goal advantage midway through the second period when Robinho amazingly blazed over from four yards when it looked a certain goal.
Moments later the game took another dramatic twist when Zabaleta was sent off for a dangerous challenge on Xabi Alonso.
Liverpool quickly seized on their numerical advantage when Torres beat keeper Joe Hart to head home a corner from Steven Gerrard.
Torres ought to have completed his hat-trick in the 82nd minute, but he skied a shot over the crossbar from a couple of yards, a horrendous miss by his high standards in front of goal.
Liverpool, who had used all three substitutes, were reduced to ten men when defender Martin Skirtel was taken off on a stretcher after sustaining a serious injury to his right knee.
But Liverpool kept their composure to score the winning goal in the third minute of stoppage time when substitute Yossi Benayoun and Torres set up Kuyt, who shot high into the roof of the net from close range to complete their comeback.