Trent Alexander-Arnold opened the scoring for Liverpool 21 minutes into the game with an impressive swept finish from the edge of the penalty box.
Julian Alvarez – another new arrival at City but with less fanfare than Haaland – came off the bench to equalise in the second half, but parity did not last long.
Yet another new signing, Liverpool’s Darwin Nunez, saw a header crash into Ruben Dias’ hand to win a penalty with just seven minutes to play, which Mohamed Salah converted.
It was Nunez who rounded off the scoring, with a diving header deep into stoppage time, converting a pull-back from Andy Robertson on the left wing.
It was a high-paced, entertaining contest in Leicester, but Haaland will have disappointed some onlookers who wanted to see the prolific striker show off his talents.
The 22-year-old could not really pose much of a threat to the Liverpool defence, marshalled by Virgil van Dijk, and both his finishing and first touch was not as sharp as he would have hoped, even hitting the bar from six yards with only a sprawling Adrian in front of him.
It was a high energy start to the game, but Liverpool seemed clearly the sharper of the two sides from early on.
Mohamed Salah was giving Joao Cancelo big problems on Liverpool’s right flank in the opening stages, with the Portuguese not looking comfortable at all with his task of dealing with the Egyptian.
It wasn’t Salah who scored the opener, but it was him who laid the ball to Alexander-Arnold to put the Reds ahead just 21 minutes into the game.
The England full-back was rolled the ball just outside the penalty box, to the right of the D, and he did not think twice before casually curling an effort into the far corner.
Replays confirmed that there was a slight flick of Nathan Ake’s head which made it all the more difficult for Ederson in the Man City goal, but it was a classy hit from Alexander-Arnold nonetheless.
There was a lot of attention on City’s summer signing Erling Haaland but he struggled to make much of an impression on the game at all.
The Norwegian fluffed a good chance just after the half hour mark when he couldn’t convert a cross from the left, while his touch let him down a couple of times in the penalty box.
Liverpool’s big summer arrival, Darwin Nunez, did not start but came on just before the hour mark to a huge reception. He had a great chance soon after, bearing down on Ederson’s goal, but his attempted dink over the goalkeeper only smashed the Brazilian in the face.
The Reds were made to regret that just 10 minutes later when City were level, thanks to VAR overruling an offside call.
A close range Phil Foden volley was saved by Adrian, but after the ‘keeper then spilled the ball, substitute Julian Alvarez poked home. The linesman had given offside against Foden but VAR decided he was wrong.
The much lower-key summer arrival up front for the champions had made an impact just a few minutes after coming off the bench.
City were in the ascendency after their equaliser but Liverpool are always a threat and they hit the champions on the break, with Nunez and Salah linking up well and the Egyptian finding the Uruguayan right in front of goal with a brilliantly accurate cross.
Nunez actually produced a pretty poor header which was going wide, but it hit Ruben Dias’ hand and after a VAR check a penalty was given.
Salah stepped up to take the spot-kick and despite Ederson going the right way – to his left – the power from the Reds forward was enough to see the net bulge.
City pushed for a second equaliser, but it was Liverpool who scored the final goal of the game as the Uruguayan dived to nod past Ederson after good work from Robertson on the left.
For more stories like this, check our sport page.
Follow Metro Sport for the latest news on
Facebook, Twitter and Instagram.