Marlon Samuels made 26 but no other West Indian batsmen reached 20 in a dismal performance on a good pitch.
Vernon Philander took two wickets inside the first two overs and finished with three for 27, while leg-spinner Imran Tahir claimed a career-best four for 28.
It was no surprise that the West Indies batted first on a dry pitch expected to get slower and lower in the second half of the match, especially after they had conceded 439 for two after sending South Africa in to bat in the previous match in Johannesburg last Sunday.
Philander had opening batsmen Dwayne Smith and Chris Gayle caught behind and fast bowler Dale Steyn followed up with the wickets of Narsingh Deonarine and Denesh Ramdin as the West Indies stumbled to 43 for four.
Samuels looked the one batsman capable of playing a major innings before he was caught on the long-off boundary off Tahir.