AB de Villiers and Ashwell Prince added 134 for the sixth wicket on Sunday to put South Africa back in control on the second day of the third and final Test in Bridgetown, Barbados.
At the close, South Africa were 285 for six in reply to West Indies' 231 with Prince unbeaten on 55 in a disciplined innings containing only three boundaries.
De Villiers curbed his natural attacking instincts with a patient 73 before he became Sulieman Benn's fourth victim. He had twice benefited from the West Indies' decision not to use the umpires' decision review system when he was caught behind trying to cut.
Benn bowled superbly, finishing the day with four for 49 from 31 overs of testing left-arm spin.
South Africa began the day on 46 for two with captain Graeme Snith doubling his overnight score before he was caught at forward short-leg by Dale Richards for 70 off Benn in the morning session.
Smith had been stalled at the start of play by four consecutive Dwayne Bravo maidens and ended up facing 115 deliveries, striking nine fours with some vicious pulls and drives.
Benn bowled Jacques Kallis with a drifter for 43 after lunch, setting the stage for de Villiers and Prince to stage their rescue operation after South Africa had been struggling at 145 for five.
South Africa lead the series 1-0.
Scoreboard:
West Indies first innings 231 (D.Bravo 61; Botha 4-56)
South Africa first innings (overnight 46 for two)
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 55
M.Boucher not out 4
Extras (b-5 lb-5 w-5 nb-8) 23
Total (for six wickets, 104 overs) 285
To bat: J.Botha, D.Steyn, M.Morkel.
Fall of wickets: 1-17 2-41 3-60 4-122 5-145 6-279. Bowling: Roach 20-6-43-1 (1nb 2w), Bess 9-0-65-1 (7nb 2w), Shllingford 25-2-85-0, Benn 31-7-59-4, Bravo 17-8-21-0, Gayle 2-1-2-0.