Keegan Petersen and Rassie van der Dussen have batted through the afternoon session to take South Africa to 3-141 in their second innings, still trailing England by 123 runs at tea on day three of the second Test.
Petersen was 42 not out and van der Dussen, who is batting with a broken finger, had 41 as they showed real resolve on Saturday.
The pair have put on an unbeaten 87 for the fourth wicket after England took three wickets in the morning session.
It has been slow going, with 118 runs scored in 56 overs on the third day but South Africa are desperate to build a lead to make England bat again and give themselves a chance in a game the home side have dominated from the first ball.
After a difficult morning for batting, the wicket has flattened out to a degree and it was largely an afternoon session of toil for the home bowlers, though they will see the new ball in 15 overs time as a chance to make further inroads.
The visitors resumed on their overnight 23 without loss and captain Dean Elgar was the first out for 11 when he was bowled by James Anderson with a superb delivery that crashed into off-stump.
In doing so, the England seamer became the joint highest wicket-taker among fast bowlers across all formats, drawing level with Australian Glen McGrath on 949 scalps.
Opener Sarel Erwee never looked comfortable but made his way to 25 before he edged Ollie Robinson to wicketkeeper Ben Foakes.
Aiden Markram’s wretched time with the bat continued when he was caught for six by second slip Zak Crawley off Stuart Broad.
England are seeking to level the three-match series after South Africa won the first Test at Lord’s by an innings and 12 runs.