South Africa look certain to wrap up a 2-0 series win after reducing West Indies to 134 for seven on the third day of the third and final Test in Barbados on Monday.
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.