All-rounder Shaun Pollock returned to the South African side after missing the second Test because of a lower back injury, while fellow all-rounder Andrew Hall was selected in an all-seam attack. The pitch was expected to help seam bowlers.
Pollock and Hall replaced fast bowler Andre Nel and left-arm spinner Nicky Boje.
New Zealand also showed two changes from the side that drew the second Test in Cape Town. Opening batsman Jamie How replaced Peter Fulton, who was struggling with a back injury - and who had scored only 65 runs in four innings in the first two matches.
Seam bowler Kyle Mills came in for off-spinner Jeetan Patel.
The start of play was delayed by 15 minutes because of dew. The match is being played unusually late for a South African season and groundsman Chris Scott erected a tent and used heating fans to help him prepare a pitch in cool conditions with short day length.
South Africa, currently sixth to New Zealand's fifth in the International Cricket Council Test rankings, lead the series 1-0 and a win or a draw will mean the two sides swop places.
South Africa: Graeme Smith (captain), Boeta Dippenaar, Hashim Amla, Jacques Kallis, Ashwell Prince, AB de Villiers, Mark Boucher, Shaun Pollock, Andrew Hall, Dale Steyn, Makhaya Ntini.
New Zealand: Stephen Fleming (captain), Michael Papps, Jamie How, Scott Styris, Nathan Astle, Jacob Oram, Brendon McCullum, Daniel Vettori, James Franklin, Kyle Mills, Chris Martin.
Umpires: Asoka de Silva (SRI), Darrell Hair (AUS)
TV umpire: Ian Howell (RSA)
Match referee: Ranjan Madugalle (SRI)