The Reds took a huge step towards a first Premier League title with a confident performance at Anfield, though the visitors made them work after equalising from two goals down
Philippe Coutinho's late strike took Brendan Rodgers' side seven points clear of the visitors, who had hit back to level things up at 2-2 after falling two goals behind in the first half.
The hosts looked to be easing to a 10th consecutive Premier League triumph on Sunday after goals from Raheem Sterling and Martin Skrtel capped a dominant first-half showing.
With City having been robbed of the Yaya Toure's services in between those two strikes due to injury, Manuel Pellegrini's woes were mounting.
But David Silva turned the game on its head with a goal early in the second half before the Spaniard's effort was deflected in by a combination of Glen Johnson and Simon Mignolet to equalise.
However, there was time for one last twist in the tale - and one that could ultimately end Liverpool's 24-year wait to be crowned champions of England - as Coutinho pounced on Vincent Kompany's woeful clearance to fire in a dramatic 78th-minute winner.
Jordan Henderson's late dismissal mattered little in the context of the game as the result ensured that the destination of the top-flight crown now rests exclusively in Liverpool's hands.
Anfield fell silent before the game to remember the 96 Liverpool fans who lost their lives at Hillsborough 25 years ago, with supporters of both clubs paying their respects.
Liverpool, unchanged from last Sunday's 2-1 win over West Ham, set a high tempo from the start and deservedly took the lead inside six minutes.
Luis Suarez split the City defence with a pass that picked out Sterling, who deceived Kompany - named in the starting line-up despite struggling with a knee injury - and Joe Hart with some excellent footwork before firing home Liverpool's 100th goal in all competitions this season.
Sterling then provided a superb right-wing delivery for Daniel Sturridge in the 14th minute but the England striker's close-range effort sailed wide of the far post.
City's hopes suffered another blow when Toure pulled up injured three minutes later, having appeared to twist his knee with an earlier off-target shot.
His replacement Javi Garcia was booked for his first tackle on Henderson as the visitors struggled to get to grips with the game.
Hart came to City's rescue with a stunning one-handed save to keep out Steven Gerrard's header, but the Liverpool captain's delivery from the subsequent corner was nodded in by Skrtel after 26 minutes.
A rare City attack saw Edin Dzeko denied by Gerrard's well-timed block before a rash Mamadou Sakho challenge sent the Bosnian tumbling in the box, only for referee Mark Clattenburg to wave away the visitors' half-hearted penalty appeals.
The home side survived a couple of late first-half scares as Mignolet produced a full-stretch save from Fernandinho's off-balance volley, the goalkeeper atoning for his error of judgement at a corner in the previous minute, which forced Sterling and Johnson to scramble off the line.
Silva did reduce the arrears 12 minutes after the break with a tap-in from substitute James Milner's cross and the Spaniard's delivery was almost turned in by Dzeko two minutes later as City cranked up the pressure.
And the leveller arrived just past the hour mark after Samir Nasri slid in Silva, whose shot across the face of goal took a deflection off Johnson and wrong-footed Mignolet.
But Liverpool had the final say, Coutinho curling home on the turn from inside the box after Kompany's limp attempt at a clearance.
Henderson was sent off in stoppage time for a wild challenge on Nasri but the title is now Liverpool's to lose.