Manchester City reached the League Cup final, shattering second-tier Bristol City's hopes of a remarkable upset, as the Premier League leaders survived a late fightback to win 3-2 on Tuesday and clinch the tie 5-3 on aggregate.
City appeared to be cruising when goals from Leroy Sane and Sergio Aguero either side of halftime put them three goals up overall, after a 2-1 win in the first leg, before their plucky opponents dragged themselves back into the game.
Marlon Pack reduced the arrears for the hosts past the hour and Aden Flint scored deep into stoppage time to make it 2-2 on the night, leaving them one goal short of forcing extra time.
There was time for one more goal, but sadly for the second-tier side, it was scored by the visitors' Kevin De Bruyne in the sixth minute of added time, leaving Pep Guardiola's Manchester City side to face Arsenal or Chelsea in the final on Feb. 25.
"We are so happy to be in the final. We played amazing in the first half," Spaniard Guardiola said after reaching his first final with the club.
"After we lost control, maybe it will be good for us... to learn that anything can happen and you have to play for 90 minutes."
If there was a hint of complacency about Manchester City in the first leg, it seemed to have been drummed out of them by kickoff on Tuesday as they tightened the screw from the first minute.
They barely gave the hosts a kick in the first half, hitting the woodwork from an Aguero cross and seeing a John Stones header drift just wide before Sane gave them the lead.
Bristol City failed to clear their lines and the ponderous defending was punished by Bernardo Silva, who nipped in to steal the ball and feed Sane, whose rifled shot across goal was deflected into the net.
Aguero doubled the lead on the night four minutes after the break with a pin-point finish from De Bruyne's perfect pass to end a lethal counter attack from the visitors.
There appeared no way back for the hosts until Pack guided a superb header back across goalkeeper Claudio Bravo into the corner of the net in the 64th minute.
That lifted the crowd but did little to change the momentum of the contest until three minutes into stoppage time when centre back Flint finished from close range off Bobby Reid's header across goal, sending Ashton Gate wild with hope.
Yet the faint trace of belief among the home fans was wiped out when Sane cut the ball back for De Bruyne to slam home.
"We came close to a draw today. They are a top, top side, probably the best side I've seen live," said Bristol City boss Lee Johnson, whose team are fifth in the Championship and pushing for promotion to the Premier League.
"They have so many players that are intricate and have class on the ball and sometimes you have to hold your hands up and say, 'They are a better side than us'."
The second semi-final, second leg is on Wednesday when Arsenal host Chelsea following a 0-0 draw in the first game.
2 (Pack 64, Flint 90+4) Manchester City
3 (Sane 43, Aguero 49, De Bruyne 90+6)
Manchester City win 5-3