Manchester City are through to the Carabao Cup final after seeing off Sky Bet Championship side Bristol City 3-2 (5-3 on aggregate) in the second leg of their semi-final at Ashton Gate.
Holding a 2-1 advantage from the first leg at the Etihad Stadium two weeks ago, Man City appeared to be cruising towards victory after goals from Leroy Sane and Sergio Aguero either side of half-time.
But Bristol City launched a second-half comeback as Marlon Pack pulled one back and Aden Flint netted in stoppage time, before Kevin De Bruyne clinched the tie for Pep Guardiola's side with the final kick of the tie.
For Man City, a Wembley final on Sunday, February 25 awaits against either Arsenal or Chelsea, who meet in their semi-final second leg at the Emirates Stadium on Wednesday night, live on Sky Sports.
Claudio Bravo started in goal for Manchester City and Bernardo Silva was handed a start in midfield, while Luke Steele and Liam Walsh came in for Bristol City.
Guardiola's side were the dominant team throughout the first half but struggled to break down their resilient opposition, creating relatively few chances.
Eventually, the opening goal of the night came via an error by Hordur Magnusson after 43 minutes. The left-back tried to play out from the back in a tight space rather than clear his lines but lost the ball to David Silva instead, and the Spaniard found Sane in space to fire home.
Win tickets to the Carabao Cup final!
Enter our competition to win a pair of tickets to the Carabao Cup final
Lee Johnson made a double change at half-time in an attempt to get Bristol City back into the match, but four minutes after the break Aguero put the tie beyond them as he ruthlessly finished off a counter-attack from just inside the area after being found by De Bruyne.
Bristol City: Steele (6), Bryan (6), Flint (7), Wright (5), Magnusson (4), Smith (6), Brownhill (6), Walsh (5), Paterson (6), Pack (7), Reid (5)
Subs: Baker (5), Kent (n/a), Diedhiou (5)
Man City: Bravo (6), Walker (6), Stones (6), Otamendi (6), Zinchenko (6), Fernandinho (6), D. Silva (7), B. Silva (5), De Bruyne (8), Sane (7), Aguero (7)
Subs: Danilo (n/a), Gundogan (n/a)
Man of the match: Kevin De Bruyne
Bristol City found themselves with a glimmer of hope as Pack found the back of the net after 63 minutes, heading brilliantly past Claudio Bravo from 12 yards after Jamie Paterson had lifted the ball into his path.
And it seemed as though a grandstand finish was on the cards when Flint poked home from close range in the fourth minute of stoppage time, but Man City went back up the other end and ended any prospect of extra-time with De Bruyne's strike.
- Guardiola celebrated his 363rd victory in top-flight management in what was his 500th game, with 63 of those victories coming in 92 games with Manchester City.
- Guardiola has now won 11 of his 18 semi-final ties, reaching his first final as a manager in England.
- Bristol City have won just once in nine games in all competitions (D2 L6) since their victory over Manchester United in the quarter-finals.
- Manchester City have reached their sixth League Cup final, winning four of the previous five - 1970, 1976, 2014 and 2016.
- Man City have progressed to a domestic cup final for the fourth time in the last six seasons (excl. Community Shield); winning the League Cup in 2014 and 2016, as well as finishing runners-up in the 2013 FA Cup.
- Pack's header ended Bristol City's run of 550 minutes without scoring a goal from open play in all competitions.
- Sane has either scored or assisted in five of his six appearances for Manchester City in 2018 (3 goals, 4 assists).
- In fact, the German winger has provided 14 assists for Manchester City in all competitions this season; no Premier League player has provided more (level with teammate De Bruyne).
- Aguero has scored eight goals in six appearances since the turn of the year, assisting one more.
Man of the match
Lee Johnson: "I think we gave it our best shot and we can be very proud of the effort put in by the players over two legs. Obviously we came close to a draw today, but they are a top side and probably the best I've ever seen live. There are so many players that are intricate and class on the ball and sometimes you have to hold your hands up and say they're a better side than us.
"But we showed spirit and never gave up and we continued to try and attack where we could and obviously we scored two goals, and not many teams have scored twice against a side like that."
Pep Guardiola: "We're so happy to be there and for everyone involved at the club to reach this final. We played an amazing game until 2-0 and then we lose control, and in these kinds of games it's never easy until the end.
"But it will be a good lesson for us next Sunday in Cardiff and especially in the Championship League, in these kinds of situations to [play for] 90 minutes."
Bristol City host QPR in the Sky Bet Championship on Saturday, while Manchester City are in action in the FA Cup at Cardiff on Sunday.