Six hours, and two sessions, were lost to the wet weather with play only getting underway in the late afternoon, two hours from the close, but it proved enough time for South Africa to bowl the West Indies out for 233 in their first innings, a deficit of 124 runs after the visitors made 357.
South Africa began their second innings in aggressive fashion and increased their lead as they were 0-30 at the close with Tony de Zorzi not out on 14 and Aiden Markram on nine.
De Zorzi, however, was dropped at first slip by Kavem Hodge in the last over off Jayden Seales to add to the home side's woes.
Kagiso Rabada took three wickets as the Windies, resuming on 4-145, were bowled out after adding 87 runs in 25 overs.
Jason Holder was the first to go after showing attacking intent, bowled by the spin of part timer Markram for 36.
Keshav Maharaj, who bowled 40 successive overs in the innings, grabbed his fourth wicket as Joshua da Silva holed out to mid-on for a single run. Maharaj finished with figures of 4-76.
Rabada removed Hodge, Gudakesh Motie and Kemar Roach, making full use of the second new ball, before Lungi Ngidi finished off the innings by bowling Seales.
Jomel Warrican was unbeaten on 35 off 32 balls after providing some resistance.
South Africa will now look to try and quickly build more of a lead on Sunday before bowl their way to victory, said captain Temba Bavuma.
"Hopefully, we will get a full day's play to give us a realistic chance of getting a result," he said.
"It's an old cliche but we are going to have to take care of that first hour and try and stretch our lead and if that works out we can throw caution to the wind and go for it."
Rain restricted play on the first day on Wednesday to 15 overs and there were several stoppages on the third day on Friday as well. More wet weather is forecast for Sunday.
The West Indies are hosting South Africa in a two-Test series, with the second match starting in Georgetown, Guyana next Thursday.