Fulham were cruelly denied a point by Alejandro Garnacho’s stoppage-time winner at Craven Cottage.
Ex-Brentford man Christian Eriksen put United ahead before Dan James’ first goal for the Whites – against his former club – hauled Fulham level just after coming on as a substitute.
That looked like earning a draw for the hosts but there was late drama, with Garnacho firing home after exchanging passes with Eriksen in the final seconds.
Eriksen netted the opener – his first goal for United – when he applied the finish at the far post after being set up by Bruno Fernandes.
Anthony Martial and Eriksen missed chances to double the visitors’ lead, and United keeper David de Gea produced second-half saves to deny Carlos Vinícius and Tim Ream.
De Gea could do nothing about Fulham’s equaliser just after the hour mark.
Tom Cairney sent in a low cross and James sneaked between Luke Shaw and Lisandro Martinez to score from near the edge of the six-yard box.
Fulham: Leno, De Cordova-Reid, Diop, Ream, Robinson, Palhinha, Cairney (Onomah 90), Pereira, Wilson (James 59), Willian, Vinicius.
Subs not used: Rodak, Adarabioyo, Duffy, Chalobah, Mbabu, Harris, Sekularac.