Riyad Mahrez scored twice as Manchester City fought back from a goal down to see off Championship leaders Fulham and book their place in the FA Cup fifth round.
City, who are nine points clear at the top of the Premier League and have not lost in domestic competition since October, were given an early fright when Fabio Carvalho turned in Harry Wilson's cross.
Fulham's lead lasted barely 90 seconds, however, before Mahrez set up Ilkay Gundogan for an assured first-time finish to settle the nerves of the home fans at a sold-out Etihad Stadium.
John Stones put City in control soon afterwards when he climbed highest at the near post to head home Kevin de Bruyne's corner, but they did not finish the tie off for good until the start of the second half.
Mahrez, who missed from the spot as Algeria crashed out of the Africa Cup of Nations against Ivory Coast last month, made no mistake this time when City were awarded a penalty for Joe Bryan's clumsy foul on Jack Grealish.
A few minutes later, Mahrez made it four when he ran on to De Bruyne's pinpoint pass and saw his shot deflected past Paulo Gazzaniga.
That signalled the end of Fulham's resistance, and they seemed to accept their fate when their 28-goal top scorer Aleksandar Mitrovic was taken off with 15 minutes to go.
Only three Premier League teams have scored at Etihad Stadium this season, and only one has taken the lead, so even in defeat Marco Silva's side still did better than most - but the gulf in class between the two teams eventually told.
City fight back to show their class
Fulham arrived in a wet and windy Manchester as the highest scorers in the top seven tiers of English football, after plundering 74 goals in 28 Championship games this season, and quickly showed why they have been so prolific.
A lightning-fast break saw Wilson run on to Mitrovic's precise through-ball and Carvalho, who almost joined Liverpool on deadline day, made no mistake from close range.
The Cottagers' pace continued to pose City problems as the game went on, but it was no surprise to see City crank through the gears and end up comfortable winners given their superb recent form.
Fulham can now concentrate on their promotion bid, while Pep Guardiola's side go into the hat for the fifth round draw, which takes place at 11:40 GMT on Sunday.
This is the start of a busy month for City, who resume the defence of their Premier League title here against Brentford on Wednesday, and are back in action in the last 16 of the Champions League later in February as they chase glory on three fronts.
- 2WalkerBooked at 45mins
- 27CanceloSubstituted forZinchenkoat 67'minutes
- 17De BruyneSubstituted forSterlingat 68'minutes
- 26MahrezSubstituted forMcAteeat 78'minutes
- 10GrealishSubstituted forDelapat 77'minutes
- 47FodenSubstituted forBernardo Silvaat 78'minutes
- 3Rúben Dias
- 20Bernardo Silva
- 20N Williams
- 6ReedSubstituted forSeriat 67'minutes
- 8WilsonSubstituted forCairneyat 75'minutes
- 28CarvalhoSubstituted forCavaleiroat 88'minutes
- 7KebanoSubstituted forKnockaertat 67'minutes
- 9MitrovicSubstituted forMuniz Carvalhoat 75'minutes
- 19Muniz Carvalho
Match ends, Manchester City 4, Fulham 1.
Second Half ends, Manchester City 4, Fulham 1.
Corner, Fulham. Conceded by John Stones.
Attempt missed. Ilkay Gündogan (Manchester City) right footed shot from outside the box is too high. Assisted by Bernardo Silva.
Offside, Manchester City. Ilkay Gündogan tries a through ball, but Liam Delap is caught offside.
Kyle Walker (Manchester City) wins a free kick in the defensive half.
Foul by Ivan Cavaleiro (Fulham).
Substitution, Fulham. Ivan Cavaleiro replaces Fabio Carvalho.
Attempt blocked. Raheem Sterling (Manchester City) right footed shot from the centre of the box is blocked. Assisted by Liam Delap.
Corner, Manchester City. Conceded by Fabio Carvalho.
Attempt missed. Raheem Sterling (Manchester City) right footed shot from outside the box is too high from a direct free kick.
James McAtee (Manchester City) wins a free kick in the attacking half.
Foul by Anthony Knockaert (Fulham).
Substitution, Manchester City. James McAtee replaces Riyad Mahrez.
Substitution, Manchester City. Bernardo Silva replaces Phil Foden.
Substitution, Manchester City. Liam Delap replaces Jack Grealish.
Attempt missed. Tom Cairney (Fulham) left footed shot from outside the box misses to the right following a set piece situation.
Substitution, Fulham. Tom Cairney replaces Harry Wilson.
Substitution, Fulham. Rodrigo Muniz replaces Aleksandar Mitrovic.
Foul by Fernandinho (Manchester City).