Swansea, with the gale howling off the bay behind them, threatened when Ian Davies charged through to release the backs.
The Baa-Baas, with five internationals on duty, held firm, but something had to give and, from a ruck close to the Barbarians line, Chris McDonald pounced.
While that was strictly close- range stuff, the next was a superb effort from inside the home half, David Weatherley outstripping the defence.
Charlie Vyvyan, the big Sale No 8, responded by plunging over in the corner for the Barbarians and Paul Arnold promptly followed suit at the other end.
Lyndon Griffiths, the replacement stand-off, landed a penalty goal before it was back to the business of try-scoring, Arnold crashing over for his second and Swansea's fourth and Griffiths making the conversion.
With Swansea cleaning up at the line-out, the Baa-Baas had only limited possession. Jonathan Callard, though, crossed to cut the deficit early in the second half and an even better move soon followed, Jason Lewis slicing through to set up Matthew Lewis for a try that Callard converted.
Swansea found it just as tough playing into wind and rain, but Jason Forster scored just 40 seconds after coming on as a replacement and Shaun Marshall sealed the victory.
Swansea: Tries McDonald, Weatherley, Arnold 2, Forster, Marshall; Conversions Williams, Griffiths 2; Penalty Griffiths. Barbarians: Tries Vyvyan, Callard, M Lewis; Conversion Callard.
Swansea: D Weatherley; Simon Davies, R Boobyer (Robbie Jones, 73), S McIntosh, S Marshall; A Williams (L Griffiths, 22), C McDonald; I Buckett (C Loader, 5-10), M Thomas, R Llewellyn (Loader, 62), P Arnold, R Moriarty (capt), Stuart Davies (J Forster, 71), I Davies, I Jones.
BARBARIANS: J Callard (Bath); G Webbe (Bridgend), J Lewis (Pontypridd), E Rayner (Bath), B Taylor (Pontypool); M Lewis (Bridgend), M de Maid (Pontypool); N Popplewell (Wasps), S Mitchell (West Hartlepool), M Linnett (Moseley), C Tregaskis (Valence d'Agen), R Goodey (Newport), D Eves (Bristol, capt), C Vyvyan (Sale), S Ojomoh (Bath). Replacement: N Bezani (Pontypridd) for Linnett, 45.
Referee: Clayton Thomas (Skewen).Reuse content