City finally got the better of Southampton at the third attempt this season with a 4-1 win, while Liverpool needed a late Diogo Jota strike to see off Championship side Nottingham Forest 1-0.
Forest had dumped out holders Leicester and Arsenal on their run to the last eight and could easily have caused another shock had the fine margins gone their way at the City Ground.
“It was a proper Cup match,” said Klopp. “I know they don’t get anything for it, but a massive compliment to them, they played a really good game.”
Klopp made seven changes with Mohamed Salah, Sadio Mane and Andy Robertson among those rested and it showed in a ragged Liverpool performance.
Roberto Firmino should have put the Reds in front before the break when he tried to dink the ball over Ethan Horvath with just the goalkeeper to beat, but it was Forest who had the better chances after the break.
Philip Zinckernagel missed the best of them 14 minutes from time when he slotted wide Brennan Johnson’s inviting cross.
Three minutes later, Jota showed the Forest forwards how it is done as he stretched to meet Kostas Tsimikas’ cross for his 19th goal of the season.
Still the home side could have taken the game to extra time as Ryan Yates headed straight into the arms of Alisson Becker and had a penalty appeal turned down as he rounded the Brazilian goalkeeper.
But Liverpool held on to book a meeting with City when one side’s quest for history will come to an end.
Quadruple v treble
City are aiming to match Manchester United’s historic feat in 1998/99 of winning the treble of Champions League, Premier League and FA Cup, while Liverpool, who trail Pep Guardiola’s men by one point at the top of the table, are aiming to go one better by adding those three trophies to the League Cup they won in February.
Despite a more resounding scoreline, City also struggled for the first hour at St. Mary’s as a Southampton side that held the English champions twice in the league this season caused them problems once more.
“We started really well and then we forgot to play,” said Guardiola. “We know it’s so difficult because Southampton are one of the best organised teams.”
Adam Armstrong hit the post early on for the Saints, but just seconds later Raheem Sterling opened the scoring with a cool finish from Gabriel Jesus’ pass.
Ilkay Gundogan then hit the woodwork for City, but Southampton got the equaliser their first-half performance deserved when Aymeric Laporte deflected Mohamed Elyounoussi’s cross into his own net.
With the tie delicately poised, Southampton’s good work was undone when Mohammed Salisu needlessly dived in on Jesus to concede a penalty.
Fraser Forster got a hand to Kevin De Bruyne’s spot-kick but could not keep it out.
City’s strength in depth off the bench then took the game away from the hosts as substitutes Phil Foden and Riyad Mahrez produced lethal finishes to round off the scoring.
Vieira’s Palace progress
Crystal Palace will face Chelsea in the other semi-final after thrashing struggling Everton 4-0 at Selhurst Park.
Marc Guehi, Jean-Philippe Mateta, Wilfried Zaha and Will Hughes got the goals as the Eagles continued their impressive first season under Patrick Vieira.
“Going to Wembley is fantastic,” said Vieira.
“You can hear the atmosphere in the stadium, the fans; this is what they wanted and we wanted to give it to them.”
Everton’s focus now turns to just staying in the Premier League as they sit perilously just above the relegation zone.
“We allowed them a free pass into the semi-final without Palace even playing particularly well,” said Everton boss Frank Lampard.
Chelsea beat Middlesborough 2-0 on Saturday in the remaining quarter-final.