Captain Hashim Amla emerged from a year of poor form with a dogged century to lead a South Africa fight back in the second Test against England on Monday.
Amla scored an unbeaten 157 as the hosts closed the third day on 353-3, still 276 runs behind but with a foothold in the match after England had piled up a massive 629 for six declared.
Amla, whose captaincy has been criticised after a year of poor results for the top-ranked Test nation, scored his first hundred in 13 months and batted through a day on which England took only one wicket, AB de Villiers for 88.
Faf du Plessis was 51 not out at the close, his first half-century in 12 innings.
Monday’s play had none of the fireworks of the previous day when Ben Stokes and Jonny Bairstow shared a stroke-laden record-breaking partnership of 399 for England, who lead the series 1-0.
South Africa forced the touring side to toil in hot conditions and will seek to keep them in the field again for much longer to try to save the match.
De Villiers reached 8,000 Test runs before he pulled a short ball from Steven Finn to James Anderson at mid-wicket just before tea.
The South Africans batted with much circumspection and were grindingly pedestrian at times but did offer chances.
Amla was twice dropped -- by Joe Root on 76 and Nick Compton on 120 -- and De Villiers survived an lbw appeal after asking for a review, which showed he got a slight nick to a Ben Stokes delivery.
De Villiers became the third South African batsman to pass 8,000 runs when he reached his half-century while Amla, who last made a significant contribution with 208 runs against the West Indies in December 2014, moved past 7,000 runs when he went to 100 in the first over after lunch.
The 31-year-old De Villiers trails only Jacques Kallis (13,206) and Graeme Smith (9,253) on the list of South Africa's all-time highest run-scorers.
England bowled good lines and with spells of aggression on a pitch that offered little assistance and in searing temperatures of over 30 degrees Celsius with more energy-sapping heat forecast for Tuesday.