The home team produced another inept batting display to reach the close of play with a 19-run lead and only three wickets left. The defiant Shivnarine Chanderpaul was 57 not out and Sulieman Benn unbeaten on four.
Paceman Dale Steyn ripped through the top order with three wickets before spinner Johan Botha took three more.
Steyn removed openers Dale Richards (17) and Chris Gayle (10) and then dismissed Narsingh Deonarine for a first-ball duck.
Botha had Brendan Nash (12) caught at slip by Jacques Kallis after tea before claiming the wickets of Denesh Ramdin (1) and Shane Shillingford, who made 25 in 77 deliveries.
Experienced left-hander Chanderpaul provided typically dogged resistance with a 156-ball knock that contained six fours.
Earlier, South Africa were bowled out for 346 after Ashwell Prince ground out an unbeaten 78 and AB de Villiers hit 73.
Prince hit five fours in his painstaking 262-ball innings while De Villiers needed 189 deliveries.
Spinner Benn was in sparkling form for West Indies, taking six for 81 in 46.4 overs.
Scoreboard:
West Indies first innings 231
South Africa first innings (overnight score 285 for six)
G.Smith c Richards b Benn 70
A.Petersen c Chanderpaul b Roach 1
H.Amla c Nash b Benn 5
P.Harris c Gayle b Bess 11
J.Kallis b Benn 43
AB de Villiers c Ramdin b Benn 73
A.Prince not out 78
M.Boucher run out 17
J.Botha lbw b Steyn 9
D.Steyn b Roach 4
M.Morkel c Bravo b Benn 9
Extras (b-5, lb-6, w-7, nb-8) 26
Total (all out, 134.4 overs) 346
Fall of wickets: 1-17, 2-41, 3-60, 4-122, 5-145, 6-279, 7-312, 8-326, 9-333
Bowling: Roach 25-6-59-2, Bess 9-0-65-1, Shllingford 25-2-85-0, Benn 46.4-13-81-6, Bravo 27-12-43-0, Gayle 2-1-2-0.
South Africa whitewash hapless West Indies
Dale Steyn cleared of doping offence
South Africa crush hapless West Indies by 163 runs
Statistical highlights: Delhi vs Chennai
South Africa pip West Indies by a run