The second Test was meandering towards a draw when South Africa reached 23 for no loss at the end of the fourth day in St Kitts on Monday, a lead of 20 over West Indies.
Captain Graeme Smith was unbeaten on 13 at the close while Alviro Petersen was eight not out.
Earlier, West Indies compiled a painstaking 546 all out on a pitch as flat as a pancake in reply to South Africa's 543 for six declared.
Anchorman Shivnarine Chanderpaul added 15 runs to his overnight 151 to finish with a marathon 166.
The experienced left hander faced 357 deliveries, compiling a modest total of 10 fours and one six.
Dwayne Bravo made 53 in 215 balls as he and Chanderpaul ground out a partnership of 100 for the fifth wicket.
Chanderpaul was eventually caught and bowled by spinner Paul Harris who also had Bravo snapped up by keeper Mark Boucher.
Ravi Rampaul (31) and Sulieman Benn (26) later shared an entertaining stand of 59 for the ninth wicket to help West Indies claim a narrow three-run lead on first innings.
Harris finished with two for 165 from 62 overs but paceman Morne Morkel was the most successful member of South Africa's attack, taking four for 116.
South Africa lead the three-match series 1-0.
South Africa: 1st innings (543-6 declared)
G Smith not out 13
A Petersen not out 8
Extras (w-2) 2
Total: 23 for no loss
Bowling: K Roach 2-0-8-0, R Rampaul 2-0-7-0, S Benn 4-1-5-0, S Shillingford 3-1-3-0.
West Indies: (1st innings):
C Gayle b Morkel 50
T Dowlin c de Villiers b Morkel 10
N Deonarine b Steyn 65
S Chanderpaul c and b Harris 166
B Nash run out 114
D Bravo c Boucher b Harris 53
D Ramdin c Petersen b Tsotsobe 1
S Shillingford c de Villiers b Kallis 7
S Benn c Kallis b Morkel 26
R Rampaul c Boucher b Morkel 31
K Roach not out 1
Extras: (b-1, lb-7, w-7, nb-7) 22
Total: 546 all out.
Fall of wickets: 1-13, 2-106, 3-151, 4-371, 5-471, 6-476, 7-486, 8-486, 9-545.
Bowling: D Steyn 29-4-105-1, M Morkel 34.1-9-116-4, L Tsotsobe 28-10-68-1, P Harris 62-9-165-2, J Kallis 23-7-65-1, A Petersen 5-0-19-0.