Hashim Amla and Rilee Rossouw both hit centuries for the second time in the series to set up a 131-run win for South Africa in the fifth and final ODI against the West Indies at SuperSport Park on Wednesday.
Amla made 133 and Rossouw powered his way to 132 in a South African total of 361 for five in an innings reduced to 42 overs because of rain.
West Indies were bowled out for 230 in reply with left-arm pace bowler Wayne Parnell taking four for 42.
The win completed a 4-1 series victory for South Africa in the last match both teams will play before travelling to Australia and New Zealand for the World Cup.
Amla and Rossouw punished a lacklustre West Indian bowling attack as they equalled their own South African record for any wicket by putting on 247 for the third wicket.
They set the mark with a first wicket stand in the second match in Johannesburg when both also hit hundreds and provided a platform for AB de Villiers to hit the fastest century in one-day international history.
De Villiers was rested for Wednesday’s game, along with all four of South Africa’s first-choice specialist bowlers.
“While batting we were only trying to hit every ball for a boundary and it turned out well,” said Amla.
“There was time in the series when we were under pressure but having everyone in good nick is good for our chances in the World Cup.”
West Indian captain Jason Holder sent South Africa in to bat and initially it seemed a good move as the batsmen struggled to time the ball on a pitch which had spent most of the day under the covers as steady drizzle delayed the start by two-and-a-half hours.
“We just let it slip in the middle and we didn’t really bowl well,” admitted Holder.
“We were’t consistent and lost wickets at regular intervals. Our batsmen need to take responsibility and they need to bat till the end.”
Amla took his total for the series to 413 for twice out, scoring his 133 runs off 105 balls with 11 fours and six sixes.
The left-handed Rossouw took 60 balls to reach his fifty but then cut loose, needing only another 23 balls to post his second international century and only 15 more before he was caught on the boundary off Andre Russell after an innings which included nine fours and eight sixes.
Andre Russell took three wickets but conceded 85 runs in eight overs, including 28 in one over during the batting power play.
Russell sent down three no-balls and five wides, two of which were out of reach of wicketkeeper Denesh Ramdin and went to the boundary.
The West Indies got off to the worst possible start when Kyle Abbott had Chris Gayle caught behind off the first ball of the innings, with Gayle chasing a delivery which was initially called wide by umpire Sundaram Ravi.
South Africa successfully sought a review which showed Gayle had edged the ball.
Narsingh Deonarine and Dwayne Smith put on 77 for the second wicket and Marlon Samuels and Denesh Ramdin added 91 for the fourth wicket before Parnell sparked a collapse.