Ruud van Nistelrooy's double booked Manchester United's place in the FA Cup semi-finals at the expense of Fulham.
Steed Malbranque fired Fulham ahead in the first half from the penalty spot after Wes Brown's rash challenge on Luis Boa Morte.
Van Nistelrooy levelled two minutes later, converting Ryan Giggs's left-wing cross from close range.
The Dutchman struck again in the second half with a typically crisp finish from Cristiano Ronaldo's cross.
It was Van Nistelrooy who had spurned two early opportunities as United eased into the driving seat.
First, his normally sure touch let him down, allowing Zat Knight to sweep across and clear the danger, and the Dutchman was then guilty of a bad miss when he turned on Ronaldo's cross and blasted over from eight yards.
Fulham almost made United pay for that profligacy when Knight climbed highest as Malbranque's free-kick came in to plant a powerful header straight at Tim Howard.
21 mins: Malbranque penalty puts Fulham 1-0 ahead
23 mins: Van Nistelrooy levels for Man Utd
34 mins: Knight long-range effort hits the bar
62 mins: Van Nistelrooy puts Man Utd ahead
But there was no escape on 21 minutes when United's defensive frailty reared its head again to gift Fulham the lead from the penalty spot.
Brian McBride kept the ball alive as Roy Keane attempted to shepherd the ball out of play and as the American pulled the ball back Wes Brown's rash challenge upended Luis Boa Morte, presenting Malbranque with the chance to ram home his penalty.
It took United just two minutes to draw level, with Gary Neville finding Giggs down the left and his inviting cross was met first-time by Van Nistelrooy.
Knight came close to a spectacular first goal for Fulham on 34 minutes with a dipping shot from fully 30 yards which bounced back off the crossbar.
Malbranque fired Fulham ahead form the penalty spot
United's response sparked a fierce scramble in the Fulham penalty area, with Van Nistelrooy and Giggs having shots charged down.
The chances continued to flow at both ends, with Keane and van Nistelrooy failing by inches to make contact with Giggs' vicious free-kick.
United's defence again failed to cope with a set-piece and in the resulting scramble Sylvain Legwinski's first effort was blocked and when the ball fell to him again he fired straight at Howard from eight yards.
Fulham were opened up four minutes into the second half but Edwin van der Sar got his angles right to deny Giggs.
The Londoners had a let-off on 55 minutes when Volz blocked Darren Fletcher off the ball and Ronaldo smacked the resulting free-kick against the bar.
United stepped up a gear in search of a second goal and found it on 62 minutes with a goal of simple yet deadly construction.
Ronaldo galloped on to a long ball down the right and his cross was met first-time by Van Nistelrooy.
Fulham mounted a late rally and Howard produced a fine save to deny Boa Morte a goal and Fulham boss Chris Coleman a tonic as he watched from his hospital bed.
Man Utd: Howard, Phil Neville, Brown, Keane (Djemba-Djemba 75),
O'Shea, Fletcher, Butt, Scholes, Ronaldo (Solskjaer 88),
van Nistelrooy, Giggs. Subs not used: Kleberson, Forlan, Carroll.
Booked: Keane, Phil Neville.
Fulham: Van der Sar, Volz, Knight, Goma, Green, Malbranque,
Sean Davis, Legwinski (Pembridge 64), Clark (Petta 81),
Boa Morte, McBride (Hayles 63). Subs not used: Crossley, Djetou.
Booked: Volz, Boa Morte, Goma, Hayles.
Referee: R Styles (Hampshire).