Both sides Friday made one change each from the first Test which Sri Lanka won by an innings and 153 runs.
South Africa welcomed back veteran seamer Shaun Pollock who opted out of the previous Test following the birth of his second daughter. Pollock replaced fast bowler Andre Nel.
Left-arm seamer Chaminda Vaas returned for Sri Lanka after missing the first Test with a hamstring injury. He came in for Dilhara Fernando.
English umpire Mark Benson, who was due to stand in the Test, flew home after falling ill during the first Test and was replaced by Pakistan's Aleem Dar. Billy Bowden of New Zealand is the other umpire.
South Africa: Ashwell Prince (capt), Herschelle Gibbs, Hashim Amla, Jacques Rudolph, A.B. De Villiers, Mark Boucher, Andrew Hall, Shaun Pollock, Nicky Boje, Makhaya Ntini, Dale Steyn. 12th man: Boeta Dippenaar.
Sri Lanka: Mahela Jayawardene (capt), Upul Tharanga, Sanath Jayasuriya, Kumar Sangakkara, Tillekeratne Dilshan, Chamara Kapugedera, Prasanna Jayawardene, Chaminda Vaas, Lasith Malinga, Farveez Maharoof, Muttiah Muralitharan. 12th man: Malinga Bandara.
Umpires: Billy Bowden (NZL) and Aleem Dar (PAK), TV umpire: Tyronne Wijewardene
Match referee: Javagal Srinath (IND)