England were battling to save the first Test with South Africa after being set a challenging 376 to win on the third day at SuperSport Park on Saturday.
England survived a tricky short period at the start of their second innings and were 24 for no wicket at tea, needing another 352 to win.
Rory Burns was given out leg before wicket to Kagiso Rabada with his score on six in the first over but called for a review which showed the ball missing his off stump. He was unbeaten on 18 at the interval.
It was a rare moment of respite for the tourists, who gave up 200 runs in taking South Africa's last six wickets.
Fast bowler Jofra Archer claimed the third five-wicket haul of his short Test career, taking five for 102. But Archer was expensive and one of the main offenders as England persisted with short-pitched bowling for most of the morning on a pitch where a fuller length has challenged batsmen.
New cap Rassie van der Dussen (51) and nightwatchman Anrich Nortje (40) set the tone for South Africa. They shared the biggest partnership of the match, putting on 91 for the fifth wicket.
Van der Dussen and Nortje were not parted until half an hour before lunch as England endured a frustrating morning, including two extended periods when captain Joe Root was off the field because of illness. Wicketkeeper Jos Buttler did not appear at all, with Jonny Bairstow taking the gloves.
First innings top-scorer Quinton de Kock hit 34, including a blistering start shortly before lunch when he raced to 30 off 17 balls. Three of his first four scoring shots were sixes, hooked off Archer despite fielders being placed on the boundary at long leg and fine leg.
Vernon Philander made 46 as South Africa comfortably took their lead beyond the 300-mark that Philander said on Friday night he considered "probably a safe zone".
On a cool, overcast day the pitch did not appear to be as difficult for batsmen as on the first two days when 24 wickets fell for 537 runs.