Manchester City are heading to Wembley. They built on their 2-1 victory from the Carabao Cup semi-final first leg, winning 3-2 in the second leg to beat Bristol City 5-3 on aggregate.
Marlon Pack headed home what looked like a consolation for the Robins before Aden Flint's late equaliser on gave the home side hope very briefly, before Kevin De Bruyne's late strike with the home side pushing up the pitch for the equaliser was enough to seal victory.
Bristol City will be disappointed to lose but will look back on their run with pride – not many sides beat Manchester United in the quarter-finals of a cup competition, and even fewer from the second division manage it.
Here are five things we learned from the game.
League Cup is still important for the big teams
The first trophy of the Roman Abramovich era at Chelsea was a League Cup. José Mourinho’s side beat Liverpool in the 2004/05 season to kickstart a period of success at Stamford Bridge.
Then the Portuguese boss went on to lift the trophy last season to underline the importance of it as he looked to be successful as Manchester United manager.
Guardiola won nothing in his first season as Manchester City boss, but after rebuilding this summer they look the dominant force in England and are set to win the Premier League.
As the Catalan coach wants to build a dynasty in Manchester, he’ll surely want to win every trophy in front of him, as success breeds success.
His lineup for today’s game showed how he valued the competition and understood its importance.
Other than Raheem Sterling and Ederson, who were on the bench, the rest of the 11 were as strong as possible.
That may have been credit to Bristol City, but it also underlined how Guardiola knows that winning the League Cup can be the catalyst for more trophy wins.
It’s no coincidence that it was key players like Agüero, De Bruyne and Sané were involved in City’s goals.
No need for Sanchez
It was clear that Manchester City were meant to sign Alexis Sánchez this January.
He had previously worked with Guardiola at Barcelona and reportedly had unfinished business with the Sky Blues' boss.
Yet, the Chilean ended up at cross-city rivals Manchester City after the Sky Blues pulled out of a deal.
The money being asked was arguably too much, and City underlined why they weren’t willing to sanction splashing out so much on the 29-year-old.
He would have either played up front or on the left wing, but that would have been harsh to oust Agüero, Sané (or Gabriel Jesus when fit) from the team.
For all the speculation that Guardiola doesn’t rate the Argentine striker, Agüero now has 56 goals under the Catalan coach – only five players have more.
Him and Sané scoring today underlined why City don’t need Sánchez, even if the former Arsenal man being part of the squad would have made them even more formidable.
Time for a change of style for Bristol City?
At the risk of going full ‘yer da', sometimes you need to just clear the ball.
Manchester City were closing Bristol City down all first half and they were struggling to get out of their half for large chunks of the opening gambits of the game at 0-0.
While there’s no doubt that manager Lee Johnson has told them to play out from the back, when you’re facing a team that simply does it better than them, like Manchester City, a bit of flexibility may be needed.
They were bringing on unwarranted pressure as Guardiola’s side closed them down at the edge of the box, and that’s where the opener came from.
Joe Bryan and Hörður Björgvin Magnússon failed to clear the ball when he could, instead looking for a pass that wasn’t on and getting dispossessed by Bernardo Silva, who found Sané.
From then, with the German free in the penalty area, there was no doubt that the ball was going to end up in the back of the net.
Of course the Manchester side don't give defences any time on the ball and will cause bigger teams than Bristol City more problems.
But with the Robins on a poor run of form, without a win in seven now, they should consider switching how they play, even if it is just briefly, to pick up a win.
Flint a rock at the back
In the summer, Flint could have left Bristol City. He was a Birmingham City transfer target, with the Blues seeing a £3.5million bid for the defender rejected. Robins fans must be so relieved that he stayed.
Not only is he a rock at the back, he’s a key player from set pieces too, and was the home side’s main threat in the first half when they got a free kick or a throw-in.
As they pushed forward late on, he deserved to be the man who scored. He is as imperious in the opposition box as he is in his own and it was obvious why he now has seven goals this season.
The centre-back won more aerial duels (three) than any of his team-mates and wasn’t at fault for any of the goals his side conceded.
At 28, he’s not young, but having risen from non-league to the Championship, it would be a shame if he didn’t get a chance in the Premier League before he retires.
If Bristol City can refind some form, he may well be doing that next season with the Robins.
Do City need a left-back?
When Oleksandr Zinchenko arrived in Manchester, he was an attacking midfielder, but with Benjamin Mendy and Fabian Delph injured, he’s been standing in at left-back.
Given that Guardiola is preferring him to Danilo underlines just how much he rates him.
Going forward he’s a threat, which was underlined with a decent shot that went with after 23 minutes.
But he's got a lot of work to do in defence. Both Bristol City goals came from his side, and a proper full-back would not have been caught out of position.
If Mendy and Delph aren't fit soon, Manchester City could have a problem at left-back.
The Russian is undoubtedly a promising talent, but he's not comfortable on the left side of a back four at the moment. Him playing means a previously unstoppable team now have an obvious weakness.