The teams couldn't be separated after 90 minutes and a further 30 minutes of extra time.
But in the ensuing shoot-out, Ederson saved Jorginho's effort and David Luiz hit the post before Raheem Sterling thumped home the winner to make it 4-3 and secure the Blues' second trophy of the campaign.
Somewhat bizarrely, the game started with a free-kick to City after about three seconds as Sergio Aguero was checked by Jorginho as he ran forward from the kick-off.
Referee Jon Moss checked with VAR and there was no further punishment, but it perhaps gave an immediate indication of who Chelsea fear the most – and with 15 goals in 17 games against this opposition, no wonder!
It wouldn't be the first cynical challenge of the afternoon, either.
Chelsea had a formation designed on containment and were happy to sit back as the Blues probed down one flank, then the other, looking for a chink in the armour.
It was 22 minutes in before any serious sight of goal came as Bernardo’s lofted cross found Aguero who chested the ball down and fizzed a shot a foot or so over the bar.
Chelsea sat so deep it was hard to find space and it must have made grim viewing for any neutrals, let alone the 30,000-plus City fans massed behind the West End goal.
The Blues were playing neat, controlled football, totally dominating but unable to find a breakthrough in what had turned into a first half war of attrition.
Vincent Kompany replaced Aymeric Laporte at the break, presumably due to a knock of some sort rather than tactical – and the skipper’s armband passed from David Silva to the Belgian.
The big question was whether Chelsea would be more adventurous in the second period or continue to try and catch City on the counter-attack at some stage.
When they finally did threaten on 53 minutes, Eden Hazard broke clear into the box only to be tackled superbly by Nicolas Otamendi – it had to be timed to perfection, and it was.
Three minutes later Aguero had the ball in the net but the flag was raised, and VAR concluded the goal shouldn’t stand – even though TV replays suggested Kun was level. Mystifying!
The game gradually started to open up and Chelsea’s best move of the game almost resulted in a goal as Willian set Hazard away down the right and as the Belgian skipped past Kompany, his low cross was met by Ngolo Kante who shot inches over the bar from eight yards.
It was a reminder that the Blues needed to be careful with the scores still level.
Of course, with Chelsea’s adventure came more space and on 73 minutes De Bruyne burst forward and skipped past Willian before being crudely challenged by Rudiger who then scythed David Silva down on the edge of the box as play was waved on.
De Bruyne's free-kick came to nothing.
It felt like a goal was coming – but with the play much more even and Chelsea looking dangerous, it was anyone’s guess who would score it.
With three minutes to go, City scrambled the ball clear and Sterling raced through the centre, past last man Jorginho before being cynically pulled down - but referee Moss deemed it just a yellow card.
City lost Fernandinho to what looked like a groin injury almost on the stroke of normal time - a huge blow given the Brazilian's influence this season - and the match went into extra time.
Though the momentum had been with Chelsea in the closing stages, the first half of extra time saw City regain some control, though chances were again at a premium at either end.
One final push was needed to avoid the lottery of penalties, and it so nearly came when Sterling danced past two challenges before teeing up Aguero who saw his effort blocked almost on the line before the danger was cleared - it was desperately close to sealing victory for the Blues.
With 118 minutes played, Leroy Sane looked to have over-hit the ball as he drove forward, but Rudiger slipped, Aguero took over and his low shot was saved by Kepa with Sterling free to his right.
It felt like the last chance to win the game had passed - though it wasn't the last talking point as Chelsea keeper Kepa refused to be subbed with cramp as Willy Caballero waited to replace him.
Given Willy's penalty saving record, City fans weren't too disappointed he didn't come on!
And so to penalties...
Jorginho saw his effort saved by Ederson.
Ilkay Gundogan put City 1-0 up...
Azpilicueta scored to make it 1-1.
Aguero's effort just squeezed under Kepa to make it 2-1 to City.
Emerson just beat Ederson to make it 2-2...
Sane saw his spot-kick saved by Kepa - still 2-2.
David Luiz's penalty hit the post!
Bernardo tucked his effort away coolly to make it 3-2.
Hazard chipped the ball home to make it 3-3.
Sterling made no mistake to win the Carabao Cup for City!
City defend the trophy!
Star man: Bernardo Silva
Hard to look past our fantastic Portuguese star whose mix of industry and breath-taking technique is a joy to watch.
"Happy. It went to penalties, so compliment to Chelsea it was incredible performance. In penalties, everything can happen. We are happy to win back to back for the first time in our history.
"You realise the team Chelsea have, they have champions. After the result two weeks ago, we knew it would be more difficult. Only bad thing is we will miss players in the next weeks. I don’t know how far we can arrive with Laporte and Fernandinho injured, but it’s better after winning the game.
"The important thing with penalties is personality, and they did it."
It’s back to Premier League action on Wednesday with a home game against Manuel Pellegrini’s West Ham United and then a trip to face Bournemouth next Saturday afternoon, once again in the Premier League.