Georginio Wijnaldum’s penalty was saved by City goalkeeper Claudio Bravo, before Gabriel Jesus scored the winning kick.
The meeting between two outstanding sides did not disappoint.
City’s Raheem Sterling finally scored his first goal against his old club when he turned home David Silva’s flick-on from close range.
The woodwork was hit three times in quick succession in the second half, as Sterling struck the post in a one on one, Liverpool’s Virgil van Dijk shot against the underside of the bar and team-mate Mohamed Salah hit a post.
The Reds drew level when Joel Matip headed home Van Dijk’s cross.
At that stage, Liverpool looked the most likely team to win, with Salah having at least three chances – most remarkably when his header was sensationally cleared off the line by a Kyle Walker bicycle kick.
And so the game went straight to penalties, with City scoring all of theirs.
A game whose competitive status is often questioned – and might end up meaning little as the season goes on – was nonetheless an entertaining start to the top-level season. A curtain-raiser if you will.
City started the game with no recognised striker and Sterling playing up front. That only lasted 13 minutes, because an injury to Bayern Munich target Leroy Sane meant Jesus was brought on. Sane was fit enough to later climb the Wembley steps and collect his medal.
By the time he has departed, City were ahead, with Sterling netting during a period they were down to 10 men.
Kevin de Bruyne, who missed a large portion of last season through injury, was majestic – especially in the first half – with a big hand in the opening goal.
The Belgian found Silva, who knocked the ball on for Sterling to blast home. His shot was straight at Alisson, but hit with such venom from close range he could not keep it out.
City definitely flagged after the break, but they could still have scored more with Sterling hitting the post after Jesus stepped over a Silva through ball.
The England forward really should have done better after being sent through again, this time by Walker, but he stumbled when trying to go round Alisson.