Manchester City controversially came from behind on the night to overturn a first-leg deficit and reach the Capital One Cup final with a 4-3 aggregate win over Everton.
An early Ross Barkley goal at the Etihad Stadium put Everton in sight of a Wembley date with rivals Liverpool but City replied through Fernandinho.
Controversy then erupted as Raheem Sterling then appeared to take the ball out of play before teeing up substitute Kevin De Bruyne to level the tie, but Sergio Aguero completed City's fightback.
The major downside for title-chasing City was the loss of the influential De Bruyne through injury late on, with the Belgian carried off after appearing to get his studs caught in the turf.
That took the shine off City's achievement but the team could still reflect on an excellent comeback after a compelling cup tie.
After their late push to sell tickets, City tried to stoke up the atmosphere with loud pyrotechnics while fans brought out their 1980s throwback inflatable bananas in their hundreds.
City controlled the majority of possession but Everton looked dangerous on the counter-attack.
It was from such a break the visitors took the lead after 18 minutes. As Aguero appealed for a foul after a tumbling under a Ramiro Funes Mori challenge, Everton quickly surged forward and fed the dangerous Barkley.
City had begun with Yaya Toure playing deep at the base of a midfield diamond, but the Ivorian was caught out of position as Barkley raced into space. Nicolas Otamendi was also outpaced as Barkley reached the edge of the area and fired a low shot past Willy Caballero, the City goalkeeping choice in cup football.
Trailing 3-1 on aggregate, City needed to respond and did so quickly. They looked to supply Aguero at every opportunity and David Silva found him with a clever flick. The Argentinian's long-range shot was blocked but Fernandinho followed up and fired home via a deflection off Leighton Baines.
Aguero rattled the post with a ferocious effort soon after and Joel Robles produced a brilliant reflex save as Silva pounced on Phil Jagielka's failed clearance.
The contest was a gripping and entertaining one and the pace was maintained after the break as Barkley broke clear and tested Caballero before Aguero got into position, only to miskick.
Silva became the second City player to hit the woodwork when he headed against the post from a Pablo Zabaleta cross and Toure could not quite reach the rebound.
Everton began to look like a team clinging on as Aguero almost turned in a cross from Sterling and the latter then had a shot blocked.
The goal City's play warranted, and levelled the tie, came after 70 minutes - but with a huge slice of controversy.
Sterling appeared to do well as he reached the byline to cross for substitute De Bruyne to rifle home - but the ball had gone out of play before it was pulled back by the England forward. None of the officials spotted it and Everton were left to rue their luck.
After being controversially denied a penalty in the first leg - while Sterling himself had a strong shout for a spot-kick turned down in the league match between the clubs a fortnight ago - City took full advantage.
Six minutes later Aguero put City ahead on aggregate with a superb glancing header from a pinpoint De Bruyne cross.
The tension was evident in the closing minutes as players from both sides flew into tackles but City held on, although the loss of De Bruyne was a late blow.
TWEET OF THE MATCH
"That ball was never out ! #GoodCall #Mcfc" - Former Manchester City striker Darren Huckerby (@hucks6dh6) jokingly refers to the incident which led to De Bruyne's crucial - and highly controversial - goal.
Willy Cabellero: 6
Pablo Zabaleta: 6
Martin Demichelis: 6
Nicolas Otamendi: 5
Gael Clichy: 6
Fabian Delph: 5
Raheem Sterling: 7
Yaya Toure: 5
David Silva: 5
Sergio Aguero: 7
Fernando (on for Silva, 80): 5
Jesus Navas (on for Delph, 46): 5
Kevin De Bruyne (on for Toure, 66): 7
Joel Robles: 7
John Stones: 5
Phil Jagielka: 6
Ramiro Funes Mori: 6
Leighton Baines: 6
Gareth Barry: 6
Tom Cleverley: 5
Gerard Deulofeu: 6
Ross Barkley: 7
Leon Osman: 6
Romelu Lukaku: 5
Arouna Kone (on for Deulofeu, 59): 5
James McCarthy (on for Osman, 59): 5
Seamus Coleman (on for Stones, 78): 5
De Bruyne. He may have only been a 66th-minute substitute but the Belgium international breathed new life into City's bid to turn around the tie and his 24-minute contribution was pivotal.
MOMENT OF THE MATCH
Introduction of De Bruyne from the bench just after the hour for the ineffectual Toure. David Silva dropped into a deeper position to provide the ammunition but De Bruyne made the difference with the goal to level up the tie on aggregate and then crossing for Aguero's winner.
VIEW FROM THE BENCH
Everton got off to the perfect start as they benefited from Roberto Martinez's decision to give Barkley the freedom to play in the space left by Toure but gradually they were worn down by City's pressure. Counterpart Manuel Pellegrini was calm throughout, replacing the more defensive Fabian Delph with winger Jesus Navas at half-time but the introduction of De Bruyne proved to be the match-winning decision.
MOAN OF THE MATCH
For the second successive night the officials got a key decision wrong. Sterling's cross for De Bruyne's crucial goal, which swung the momentum in City's favour, appeared to have clearly crossed the line before he centred but assistant linesman Scott Ledger on the far side was not in a position to spot it.
WHO'S UP NEXT?
Aston Villa v Manchester City (FA Cup, Saturday January 30)
Carlisle v Everton (FA Cup, Sunday January 31)