All-rounder Dwayne Bravo took four wickets in 21 balls as the West Indies took a 213-run first innings lead on the third day of the first Test at St George's Park Friday.
West Indian captain Chris Gayle decided not to enforce the follow on and the tourists increased their overall lead to 279 when they reached 66 for two in their second innings at tea.
Gayle got the innings off to another blazing start before he was caught behind off Makhaya Ntini for 29 off 22 balls. He was followed by Runako Morton, who was leg before wicket for five to Jacques Kallis' first ball of the innings.
Bravo, who finished with four for 24, took the last four wickets at a personal cost of six runs as the West Indies bowled out South Africa for 195.
South Africa suffered an early blow after resuming on 122 for five when Mark Boucher was out in the third over of the morning. Boucher top-edged a hook against Jerome Taylor and was caught by Daren Powell at fine leg.
But AB de Villiers and Paul Harris defied the West Indian bowlers for most of the morning in a seventh wicket stand of 43 before Bravo struck shortly before lunch.
De Villiers, the only top order batsman to shine, made a patient 59 off 127 balls before he was bowled by a superb delivery from Bravo which straightened off the pitch and clipped his off stump.
Bravo followed up with the wicket of Harris, who batted for 100 minutes and faced 68 balls in making nine. He was caught at mid-off when he attempted a forcing shot off the back foot.
South Africa's last two wickets fell in 13 balls after lunch as Bravo had Andre Nel caught at mid-on and Dale Steyn caught at fine leg.
Gayle, who made 66 off 49 balls in the first innings, hammered 19 off Steyn's third over, starting with a hooked six which sailed over Ntini's head at long leg.
But he was forced on to the back foot and squared up by Ntini and edged a low catch to Boucher's left after dominating an opening stand of 32 with Daren Ganga.