After an opening period that failed to live up to the game's blockbuster billing, the second half began at a ferocious pace, with Egypt international Salah denied by a superb save from City goalkeeper Ederson moments after the break.
City then thought they had taken the lead through Phil Foden in the 53rd minute, sparking wild celebrations on the City bench, only for it to be ruled out following a VAR review, Erling Haaland deemed to have fouled Fabinho in the build-up.
Liverpool made the most of their reprieve and kept coming at City, with the pressure eventually paying off as Salah raced clear after a mistake from Joao Cancelo to fire what proved to be the winner 14 minutes from time.
As City threw everything at Liverpool late on, tensions boiled over with Klopp sent to the stands for his over-zealous protestations against a foul he felt his side should have had.