Seamer Vernon Philander and leg spinner Imran Tahir both picked up two wickets while reserve paceman Lonwabo Tsotsobe bagged four for 45 as Derbyshire declared on 174 for nine, 191 behind, with Ross Whiteley scoring an unbeaten 51.
That gave Graeme Smith's team the chance to give their tail-enders batting practice and Philander took advantage with an unbeaten 68 while Dale Steyn made 34 before the game meandered to a draw when the visitors declared on 168 for seven at 4.50pm.
The tourists needed only two overs to break through on Saturday morning when Australian Test batsman Usman Khawaja got an inside edge to Philander and gave wicketkeeper Thami Tsolekile the second of five victims. Morne Morkel had Wayne Madsen caught behind down the leg side and Dan Redfern could only edge Tsotsobe to Smith at first slip.
Tsotsobe took two more wickets against in three balls when Jon Clare and Tom Poynton both edged into Tsolekile's gloves. Another catch by Smith gave Tsotsobe his fourth victim although the South Africans will have taken more encouragement from the performance of Tahir, who did not bowl a single no-ball in his nine overs after his over-stepping problems in the first two Tests.
Tahir had gone for 21 in his first three overs on the previous evening but the next six cost only 14 and earned him two wickets, one of them to an outstanding catch by Smith, who seemed to grab the edge from Alex Hughes as it went past him.
Former Derbyshire spinner Robin Peterson came in for some rough treatment from Whiteley, who drove him for three sixes in a 62-ball fifty that also contained six fours before the home side declared at lunch.
The tourists also gave Steyn five overs in the morning and he was batting in the afternoon although attempts to give their lower order practice was only partially successful as Mark Footitt removed Morne Morkel and Tahir for ducks in a seven-over spell.
Faf du Plessis was bowled playing no shot and Peterson was brilliantly caught at gully before Albie Morkel top edged a pull at Clare to midwicket. Tsolekile's 22-over vigil ended when he was bowled by Tim Groenewald, the 16th player in the Derbyshire team, and Philander needed some treatment after he was hit in the box by Whiteley.
But he was able to continue his innings after tea and drove Peter Burgoyne over the pavilion on the way to a 67-ball fifty as he and Steyn added 74 for the seventh wicket before the teams shook hands on a game that has set the tourists up for the showdown at Lord's.