Bafetimbi Gomis’ slight touch on 73 minutes proved to be difference, with Jonjo Shelvey’s powerful 25-yard drive deflecting off the striker’s head to fly past David de Gea.
Van Gaal’s side had benefited from a deflection of their own in the first half to take the lead through Ander Herrera with 28 minutes gone, but Ki Sung-yueng levelled just two minutes later and Gomis completed the turnaround to inflict only a second defeat since November on United.
Herrera’s arrowed shot, which skimmed Ashley Williams’ boot to find the corner, was the result of a flowing passing move between Luke Shaw, Wayne Rooney and Angel di Maria, who played a perfect final ball for the goalscorer.
Swansea had twice threatened through Gomis – who had a header cleared off the line by Herrera – and responded swiftly to the setback.
Ki Sung-Yueng beat Shaw to Shelvey’s cross and steered the ball past De Gea.
United increased the pressure in the second half, but Marcos Rojo headed over the bar from three yards despite being unmarked.
Robin van Persie – who left the Liberty on crutches after being injured late on – also hit the side netting before Ki set up Shelvey to fire home via Gomis.
Swansea’s first-ever double over United leaves them sitting in a comfortable position in the top half, while defeat for Van Gaal’s side comes as a bitter blow for their Champions League hopes, Arsenal leapfrogging them into third place.
Swansea: Fabianski (7), Naughton (7), Fernandez (7), Williams (7), Taylor (7), Cork (7), Shelvey (8), Ki (8), Sigurdsson (7), Routledge (7); Gomis (7).
Used subs: Montero (7), Amat (6).
Manchester United: De Gea (7), McNair (4), Jones (5), Rojo (6), Shaw (7), Blind (6), Fellaini (6), Herrera (7), Di Maria (6), Rooney (7), van Persie (6).
Used subs: Valencia (5), Young (6), Mata (5).
Man of the match: Ki Sung-Yueng