Brian Lara, the West Indies' left-handed opener, hit an unbeaten 111 off 140 balls, his second century of the series, to take the visitors past their target of 186 with five overs and three balls to spare.
South Africa made a promising start before Phil Simmons trapped Andrew Hudson leg before for 17, and the next four wickets fell for the addition of only 40 runs. Hansie Cronje and Peter Kirsten went cheaply, while Kepler Wessels was bowled by Simmons one run short of his half-century.
Daryll Cullinan did what he could to stem the middle-order collapse, contributing 45 to South Africa's total of 185 for 6.
Lara and Desmond Haynes shared an opening stand of 152 and looked capable of winning the game by themselves. Lara, who was dropped by Jonty Rhodes when he had just reached double figures, went on to hit 12 fours and a six in his innings. Last week he hit 128 against Pakistan.
The pace bowler Richard Snell took the only wicket for South Africa, having Haynes caught behind. Haynes's 57, scored off 105 balls, included one six and two fours.
TRIANGULAR SERIES (Bloemfontein): South Africa 185 for 6 (50 overs; K Wessels 49, D Cullinan 45). West Indies 188 for 1 (44.3 overs; D Haynes 57, B Lara 111no). West Indies won by nine wickets.Reuse content