Trent Alexander-Arnold's 80th-minute goal earned Liverpool a 1-1 draw at Manchester City after Erling Haaland broke yet another record.
See: Man City 1-1 Liverpool: Champions have flaws - title race is wide open
It looked like Man City were heading four points clear at the top of the table thanks to Haaland's 50th Premier League goal, but Alexander-Arnold's superb strike means the Reds stay one point behind City, but drop a place to third following Arsenal's 1-0 win at Brentford.
City, whose 23-match winning home run in all competitions came to an end, fall to second, one point adrift of the Gunners.
How the match unfolded
Man City made one change to the team that drew 4-4 at Chelsea prior to the international break. Ederson was passed fit after pulling out of the Brazil squad, but Jack Grealish was absent due to illness. For Liverpool, Curtis Jones started in midfield, with Darwin Nunez and Diogo Jota accompanying Mohamed Salah in attack.
The first chance of the match came in the 11th minute, when Alisson's poor pass went straight to Phil Foden, whose strike at goal was weak and did not trouble the Liverpool goalkeeper.
TV Info - Broadcasters
Liverpool had the best chance of the opening exchanges, with Nunez's header from Salah's cross being tipped away by Ederson.
But that was Liverpool's only shot on target of the first half as Man City asserted their dominance, which they made count in the 27th minute after another Alisson error.
Alisson's sloppy kick was controlled by Nathan Ake, who skipped between two challenges and played in Haaland to score his historic 50th goal, reaching the milestone in his 48th appearance, smashing Andrew Cole's record.
It was the Norwegian's first Premier League goal against Liverpool, meaning he has now scored against 20 of the 21 opponents he's faced in the competition, failing only against Brentford, whom City next face in February.
Man City came close to doubling their lead in the last minute of the first half in a moment involving a moment of brilliance by both goalkeepers.
Ederson's long pass led to an opportunity for Foden to smash a shot at goal, which Alisson dived to his left to push wide of a post.
In the second half, City continued to look the more likely team to score, with Julian Alvarez lifting a shot over the bar and Ruben Dias having a goal ruled out after Manuel Akanji had fouled Alisson.
Liverpool also lost Diogo Jota to an apparent injury, with the Portuguese hobbling off before the hour mark.
See: Klopp's update on Jota and Alisson injuries
But Jurgen Klopp's side refused to give up, and shortly after Nunez saw a shot saved at the near post, they equalised, and Alisson played a big part, making amends for his mistake that led to City's goal.
Alisson saved a close-range shot by Haaland and, less than 30 seconds later, Salah passed to Alexander-Arnold, who produced a fantastic low finish from the edge of the box for his first goal of the Premier League season.
Both teams wanted to find a winner, and Klopp tried to benefit from fresh legs as he made five substitutions.
Pep Guardiola in comparison made none, but despite that it was City who so nearly nicked a win at the death.
In the last minute of stoppage time, Alvarez's corner was headed across goal and inches wide by Haaland, as the latest instalment of Man City v Liverpool ended all square.
See: Man City report | Liverpool report
Did you know?
Liverpool have avoided defeat in 10 of their last 11 Premier League matches in which they’ve fallen behind (W4 D6) with their only such defeat in this period coming against Spurs in September. Indeed, the Reds have rescued 12 points from losing positions in the top flight this season, the most of any side.
Following his assist for Trent Alexander-Arnold’s equaliser, Mohamed Salah has now been directly involved in 17 goals across his 19 appearances against Manchester City in all competitions for Liverpool (11 goals, 6 assists), more than he has against any other opponent since he joined the Reds.
Liverpool became the first side to stop Manchester City winning at the Etihad Stadium in all competitions since Everton in December 2022 (1-1), with City’s 23 game winning run on home soil coming to an end.
Jeremy Doku completed 11 dribbles, the most in a single Premier League game since September 2021 (Adama Traore vs Brentford, also 11), while it’s the most on record (since 2006/07) a player has completed in a Premier League game against Liverpool.
This was the fourth Premier League meeting between Man City and Liverpool with both sides starting the day in the top two in the table. Only three fixtures have been played more often in the competition’s history, with Arsenal, Chelsea and Man City each taking on Manchester United six times as the top two.
Soucek's last-gasp goal gives West Ham dramatic win at Burnley
Luton overcome Palace to claim first home Premier League win
Newcastle beat Chelsea with superb second-half showing
Joao Pedro's double earns Brighton a first win in seven matches
Bournemouth secure first Premier League away win in style
Havertz's late winner at Brentford sends Arsenal top