England endured further frustrations before bowling South Africa out for 309 an hour into the second morning of the third Investec Test at Lord's.
Vernon Philander, who made 61, completed his maiden Test half-century before he ran out of partners, having begun the day with 46 to his name already.
England therefore had to work hard again to break down continued resistance as Dale Steyn and Morne Morkel helped Philander take the total past 300.
By the time Philander himself was stumped off Graeme Swann to close the innings, as he tried to bag more bonus runs alongside number 11 Imran Tahir, the tourists' last six wickets had realised 255 runs.
Stuart Broad put himself in the final column for the first time in the innings, when his use of full-length swing did the trick against Steyn in the fourth over of a warm but initially cloudy morning.
Steyn had been hit on the hand by James Anderson, who made him hop around with some aggressive short bowling. But Broad tested him on the front foot, and found the edge to second slip as he shaped to drive.
Philander, back at the ground where he spent some time as a Middlesex overseas player last summer, did not panic and got his just reward with a 75-ball 50.
Morkel then provided another handy contribution before he chased a wide ball from Steven Finn, who finished with four for 75, and fell to a memorable diving catch by Matt Prior, the wicketkeeper's fifth of an innings which he was to finish with six victims - thanks to his stumping of Philander.