Diogo Jota canceled out Kevin de Bruyne's early opener and Sadio Mane rescued a point for the visitors after Gabriel Jesus made it 2-1.
The result means that Pep Guardiola's side remains one point ahead of the Merseyside club with seven league matches remaining.
It was a frantic start and Raheem Sterling should have opened the scoring after five minutes but Alisson blocked his shot from close range.
Less than a minute later, De Bruyne breezed past Fabinho and his long-range effort deflected off Joel Matip and into the back of the net.
Liverpool bounced back and found an equalizer after 13 minutes when Mane set up Jota inside the box to squeeze the ball under City goalkeeper Ederson.
Ederson almost scored a comical own goal just after the half an hour mark following a back-pass but managed to clear the ball away before it crossed the line.
City started the gain the upper hand and went back ahead after 37 minutes when Jesus managed to stay onside and finish off Joao Cancelo's cross at the back post.
Just before the break, Jota was put through on goal but Aymeric Laporte produced a fine last-ditch challenge to prevent the equalizer.
Liverpool grabbed an equalizer 48 seconds into the second half when Mohamed Salah set up Mane to smash the ball into the top corner.