Manchester City saw off Swansea City in the last round to secure their spot in the last eight, while the Toffees completed a seesaw nine-goal thriller, prevailing 5-4 over Tottenham Hotspur after extra time.
Everton manager Carlo Ancelotti named a full-strength squad, although the hosts were without first-choice goalkeeper Jordan Pickford, who was sidelined with a rib injury. In contrast, Pep Guardiola named a much-changed side, with just four regulars named in the starting lineup at Goodison Park.
Expectedly, the visitors dominated the early proceedings but struggled to break down the hosts' compact defence. Richarlison proved to be the biggest threat for Everton at the other end, while the aerial presence of Dominic Calvert-Lewin also came to the fore.
Raheem Sterling and Richarlison forced the opposing goalkeepers into relatively easy saves, But that was as good as it got in terms of attacking play from either side in a goalless first half.
It was more of the same in the second half. Despite having over 75% possession, Manchester City failed to make the most of their dominance. Sterling, in particular, was guilty of poor decision-making in the final third, while the anonymous Gabriel Jesus was forced to drop deep just to get a touch of the ball.
With time running out and extra-time looming, Guardiola made attacking changes. First came Riyad Mahrez on for Bernardo Silva in the 63rd minute before Kevin De Bruyne replaced the ineffective Raheem Sterling with ten minutes to go.
Everton's deep-lying blocks meant that Aymeric Laporte had much space as an extra defender for most of the game. But he failed take advantage of this situation on several occasions.
That changed late on, as he charged forward with the ball from defence twice in the final stages in a bid to force the issue for Manchester City. It was the second such drive forward that led to the game's opening goal.
Kevin De Bruyne picked up the pass from Laporte and smartly created space for himself but saw his attempted shot blocked into the path of the Frenchman.
Laporte stuck a well-placed shot at goal, but Joao Virginia produced a stunning save to tip the ball onto the crossbar. However, Ilkay Gundogan was on hand to head the rebound home and give the visitors the lead in the 84th minute.
They soon doubled their advantage seven minutes later. Rodri excellently dispossessed Yerry Mina with practically his first touch of the game and played in De Bruyne. The Belgium international showed great composure to slot a left-footed finish past Virginia to send Manchester City to the last four of the FA Cup.
This is the third consecutive season that the Etihad outfit has made the semi-final of the FA Cup, while Everton's 26-year wait for a major trophy continues.
The win also saw Manchester City go 17 away games unbeaten in all competitions, a club record.
On that note, here are five talking points from the game.
#1 Manchester City's quadruple dream remains alive
Manchester City's 14-point advantage at the summit of the 2020-21 Premier League means they are effectively the champions-elect of England.
They are also through to the final of the League Cup, where Tottenham Hotspur stand in the way of a fourth consecutive triumph in the competition.
Manchester City will also fancy their chances of reaching their first Champions League semi-final since the 2015-16 season, as they have drawn Borussia Dortmund in the quarter-finals.
Meanwhile, this victory over Everton means Manchester City are a step closer to winning the FA Cup. After they became the first English club in history to win a domestic treble, Manchester City could go one better by winning all four trophies on offer.
#2 Carlo Ancelotti's low-block approach almost works
Everton came into this game with zero intent of attacking, and that was pretty much evident in the early exchanges of the game.
Dominic Calvert-Lewin was the lone man in attack, and the England international's strength saw him function as a target man. Behind him, the likes of Richarlison and Lucas Digne attempted to catch Manchester City on the break.
For 84 minutes, the visitors held the lion's share of possession but failed to breach a resolute Manchester City backline.
However, two late goals saw Everton's gameplan scuppered. On the overall balance of play, it was no less than what Manchester City deserved.