CAPE TOWN, SOUTH AFRICA - JANUARY 04: Hashim Amla of the Proteas in action during day 3 of the 2nd Test match between South Africa and England at PPC Newlands on January 04, 2016 in Cape Town, South Africa. (Photo by Carl Fourie/Gallo Images/Getty Images)

Captain Hashim Amla emerged from a year of poor form with a dogged century to lead a South Africa fightback in the second Test against England in Cape Town.

Amla scored an unbeaten 157 as the hosts closed the third day on 3-353, still 276 runs behind but with a foothold in the match after England had piled up a massive 6-629 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.