Raheem Sterling put City in front 12 minutes into an entertaining contest in front of 77,565 at Wembley but after the Reds took greater control in the second half, substitute Joel Matip headed home a leveller.
Mohamed Salah and Virgil van Dijk hit the woodwork and the former also had a stoppage-time header cleared off the line – but a shootout was required to separate the sides and Georginio Wijnaldum was the unfortunate man to have a kick saved.
Team news
Jürgen Klopp named a strong starting line-up in London, with Roberto Firmino and Salah deployed up front alongside Divock Origi at the end of their first week back in training.
James Milner missed out as a precaution due to a tight muscle.
First half
There was an open feel to the game from the off, setting the tone for a series of chances at either end.
The first came for City as Sterling stole the ball from Joe Gomez high up the pitch and fed in Leroy Sane to his left – but the winger could only slice his shot wide as the angle narrowed.
Immediately after, Firmino followed up some sublime control at the edge of the opposition box with a rising strike on the turn that was caught by Claudio Bravo.
Then, on eight minutes, Liverpool’s No.9 fashioned a big chance for Salah; in space in the right channel as he collected a pass, the Egyptian tried to thread his finish inside the near post but guided the ball the wrong side.
City soon pounced and struck the first genuine blow in the 12th minute.
Their free-kick routine created an overload in the area and when David Silva carefully lifted in a cross, Sterling knocked it through the legs of Alisson Becker and over the line for 1-0.
Salah might have quickly levelled, having used first his body strength and then his speed to break away from Oleksandr Zinchenko down the right, only to prod a strike off the outside of the near post.
Next, Alisson had to repel a Sterling effort at close range after an attempted clearance ran to the City forward inside the box.
The frequency of clear opportunities subsided as the first half drew to a close and the sides headed into the interval with the league champions one up on the European Cup winners.
Second half
David Silva rifled a rising hit over the crossbar and Origi’s low strike at the other end was rendered harmless by a deflection off Kyle Walker.
Liverpool were in the ascendancy as they attacked towards the goal behind which Reds fans were in defiant voice – and went agonisingly close to a leveller twice within a minute.
First, Trent Alexander-Arnold’s corner was swept towards goal by Van Dijk but the ball bounced off the underside of the crossbar and onto, not over, the line.
And then Salah brilliantly shuffled into a shooting position at the right edge of the area and was so unlucky to see his low drive thud against the post with Bravo out of reach.
Sterling could have doubled City’s advantage when he broke in behind and one-on-one with Alisson, who stood firm and thwarted him at the last.
Bravo saved another angled shot from Salah but the goal Liverpool’s second-half performance deserved came with 13 minutes left on the clock.
Jordan Henderson’s deep free-kick came to Van Dijk at the back post and the Dutchman lofted a perfect assist into the middle for Matip to nod into the net.
Another substitute, Naby Keita, went close to winning it with a sweeping attempt from Adam Lallana’s tee-up but Bravo reacted well to palm the ball clear, and the City stopper also blocked from Salah after high pressing from the Reds forced an opening.
There was still time for Salah to be denied a decisive goal in incredible fashion.
The No.11 got free down the right-hand side and cut in for a strike that was blocked by a last-ditch John Stones challenge – and his headed rebound was acrobatically cleared away from goal by Walker.
So penalties were needed and Wijnaldum was the only man to see a spot-kick saved, meaning the narrowest of defeats for the Reds in the annual season curtain-raiser.