The West Indies suffered an early blow after they were set 247 runs by the Proteas to win the first Test in Centurion on Wednesday.
Kemar Roach had spearheaded a fine performance in the field by the tourists, taking 5-47 as South Africa were bowled out for 116 in their second innings.
The hosts lost six wickets for 67 runs after resuming on 49-4.
There was time for one over for the West Indies to start their run chase – captain Kraig Brathwaite fell for nought to the third ball, getting a faint edge down the leg side off Kagiso Rabada.
South Africa reviewed successfully after Brathwaite was initially given not out.
The West Indies were 0-1 at lunch.
The Proteas’ troubles started early when Heinrich Klaasen played a loose drive against Jason Holder and was caught behind for seven in the third over of the morning.
First innings century-maker Aiden Markram took his overnight score of 35 to 47 before he was caught behind off Roach’s first ball of the day.
South Africa slumped to 80-8, with the West Indies bowlers seldom giving the batsmen a chance to play an attacking shot.
Senuran Muthusamy, picked as a batting all-rounder, was able to score only four runs off 36 balls before he gloved Shannon Gabriel’s first ball of the innings down the leg side to Da Silva.
New cap Gerald Coetzee made a spirited 20 off 15 balls, including a six and four off successive balls from Gabriel before he charged down the wicket to Roach and top-edged the ball to present Da Silva with his sixth catch of the innings.
Da Silva held a seventh catch when last batsman Anrich Nortje edged a ball from Roach, who completed his 11th five-wicket haul in Tests.