In the final match before the curtain falls on the Premier League ahead of the World Cup break, the spoils looked set to be shared before teenager Garnacho's dramatic late intervention.
United had gone ahead after 14 minutes when Christian Eriksen capitalised on a well-worked quick break from the visitors before slotting the ball into an empty net.
Despite that early lead, United were unable to fully take control of the game, with the gaps in their squad due to illness and injury evident as they had to resort to counter-attacks while inviting Fulham pressure as the home side pushed for an equaliser.
And Marco Silva's men were rewarded for their efforts just after the hour mark when former United winger Daniel James also struck from close range for a deserved leveller - the on-loan Leeds player's first goal of the season.
However, despite Fulham being the better team for large parts of the game, it was the visitors who claimed victory when Garnacho slotted past Bernd Leno just before the final whistle.
Having gone into the weekend in fifth place, Erik ten Hag's side signed off for the extended World Cup break on a positive note despite being without a number of key players in London, with Cristiano Ronaldo, Antony, Jadon Sancho and Raphael Varane among those missing.
Fulham, who themselves were without star striker Aleksandar Mitrovic due to a foot problem, started positively and David De Gea was called into action to deny Carlos Vinicius.
United also tested Leno in the opening exchanges stages through Anthony Martial before the Red Devils took the lead when they caught Fulham out with a well-organised counter-attacking move.
Martial played in captain Bruno Fernandes who put the ball across the box where the unmarked Eriksen had the simple task of tapping the ball into the net.
The visitors got the better of the home side's offside trap throughout the first half, with Martial being picked out by Fernandes and having another attempt saved by Leno.
And, despite Fulham's possession and pressure, United remained dangerous on the break, with Martial heading a Luke Shaw cross just over the bar.
Eriksen had an ideal chance just before half-time to add to his side's lead when he drove into the box to attack a cross from Fernandes, but despite being under no pressure from the Fulham defence, he fired wide.
At the start of the second half Leno had to make another save following a quick United counter-attack, with the Fulham goalkeeper denying Anthony Elanga in a one-on-one, before Antonee Robinson and Tim Ream combined to prevent Marcus Rashford scoring the follow up.
United were made to pay for not taking their chances when Fulham drew level in the 62nd minute after Willian caught out the visitors with a quick run down the left, supported by the overlapping Tom Cairney.
It was Cairney who then picked out James in the centre of the box and the substitute slotted home just minutes after replacing Harry Wilson.
Fulham pushed for the winner while United struggled to contain the momentum generated from the home side, with Joao Palhinha forcing a punched save from De Gea with an improvised overhead kick.
However, it proved to be United who would claim the deciding goal when, with the match in stoppage time, Garnacho played a clever one-two with Eriksen on the edge of the box before running into the area to slot home for winner.