West Indies fast bowler Fidel Edwards removed South Africa captain Graeme Smith and top-order batsman Hashim Amla before lunch Saturday to have South Africa battling at 45-3 on the fourth day of the first of three tests.
The West Indies batsmen added 29 runs to their overnight total of 146 to reach 175 before Paul Harris removed Daren Powell for six, and Jerome Taylor holed out to Andre Nel after scoring 22 off 28 balls.
Harris finished with figures of 4-35, and Dale Steyn had 3-67.
South Africa started its second innings at St. George's Park needing 389 to win after West Indies scored 408 in its first innings and dismissed South Africa for 195.
Herschelle Gibbs was the first to go, trapped leg before wicket by Daren Powell for his second duck in the match.
Amla scored just 8 runs before driving at a swinging delivery from Edwards to give wicketkeeper Denesh Ramdin an easy catch. Smith managed 11 before Darren Ganga made a diving catch from short leg.
Edwards had 2-11 at lunch, and Powell 1-17.