Manchester United will face bitter rivals Manchester City in the League Cup semi-finals after a dramatic 2-0 win at Everton, while Tottenham joined them in the last four with victory against Stoke on Wednesday.
United dominated for long periods of their quarter-final at Goodison Park, but it took until the 88th minute before Edinson Cavani broke the deadlock.
The former Paris Saint-Germain striker's fourth goal for United since joining on a free transfer in October came at the same venue where he opened his account for the club last month.
Anthony Martial bagged United's second goal in stoppage time.
"Cavani's finish wasn't bad! He is a quality striker. We know when we defend well we have got players to win us the game," United manager Ole Gunnar Solskjaer said.
"The spirit in the camp is good and this will give us a boost going into the Christmas period."
After a rocky period that raised questions about Solskjaer's future following their exit from the Champions League, United have recovered their equilibrium.
They are third in the Premier League and have won their last three matches in all competitions.
United last lifted silverware when they won the Europa League in 2017.
Solskjaer, who won nine major trophies as a player with United, took charge at Old Trafford in 2018 and saw his side lose in three semi-finals last term.
He now has a chance to go one better this season after United were drawn to face holders City in the last four.
United were beaten by City at the same stage of the competition last season and Solskjaer said: "We are in the semi-finals, so we are one step away.
"It is the worst game to lose, a semi-final. We are going to do everything we can to get to that game in a good state."
Tottenham and second-tier Brentford will meet in the other semi-final, with the matches to be played over one leg in the week commencing January 4.
Harry Maguire and Bruno Fernandes were the only United players to retain their places after the 6-2 rout of Leeds at the weekend, with Paul Pogba returning to the starting line-up.
With just two minutes left before a penalty shoot-out, Martial slipped a pass to Cavani, who drove a superb strike past Everton goalkeeper Robin Olsen from the edge of the area.
Martial then slotted home with virtually the last kick.
Cavani's goal came after he had flicked a hand in Yerry Mina's face earlier in the match, but there was no VAR available to potentially punish him.
Everton manager Carlo Ancelotti said: "The rules were that VAR was not in this game, if the referee decided that Cavani didn't do anything wrong we have to accept it. Full stop."
- Alli blasted -
Jose Mourinho accused Tottenham midfielder Dele Alli of creating "problems" for his own team during their 3-1 win against Stoke.
Wales forward Gareth Bale made the most of a rare start to put Mourinho's team ahead at the Bet365 Stadium.
But Alli was at fault when his flamboyant flick was intercepted in the build-up to Jordan Thompson's equaliser for Stoke.
Alli's latest mistake drew an angry response on the touchline from Mourinho, who rebuked the star before substituting him minutes later.
Ben Davies put Tottenham back in front with his first goal since 2017 before England captain Harry Kane sealed Spurs' place in the semi-finals.
But it was Alli's public dressing-down that took the spotlight, with the England international's wretched season hitting a new low in his first start since November 26.
"Yes, for me a player that plays in that position is a player that has to link and create and not to create problems for his own team," said Mourinho, who has exiled Alli for long periods this season amid talk of a move to Paris Saint-Germain.
"In that situation, an objective counter-attack would probably end with a goal, and it ended with a counter-attack behind our defenders. So yes, I am upset."