Having started the day at 64, Amla batted the entire day and frustrated the visitors as they were able to pick only one wicket on Monday in Cape Town.
Resuming the day on 141-2, the 32-year-old added another 127 runs with AB de Villiers who was removed by Steven Finn for 88, Sport24 reported.
The right-handed batsman, who had not passed 50 since January 2015 and having not carded a century since December 2014, had come into the match under tremendous pressure.
That pressure was increased by many folds after the visitors destroyed their bowling and declared after scoring a mammoth first inning score of 629/6.
At stumps on Day Three, the hosts were 353 for 3, still trailing by a huge margin of 276 runs.
Earlier, Ben Stokes, who had smashed 258 runs, including 30 boundaries and 11 sixes, broke the record of the fastest 250 in Test match history.