The All Blacks battled back from a 17-3 deficit to trail by just four points going into the final 10 minutes.
But a wayward pass from substitute scrum-half Piri Weepu, which replacement lock Jason Eaton failed to hold on to, resulted in a try for Springboks centre Jaque Fourie at the other end which effectively sealed the New Zealanders’ fate.
“We thought we might have a bit of a show halfway through the second half but we just made too many errors during the game,” said All Blacks coach Graham Henry.
“We didn’t execute well enough to win the game so congratulations to South Africa.”
The dropped pass that led to Fourie’s try was just one of several in an error-ridden performance from the visitors, who were penalised heavily at the breakdown by referee Alain Rolland.
They also inexplicably opted not to contest the Springboks line-out which gave Victor Matfield free rein and allowed the Springboks to make good use of the rolling maul.
Had Ruan Pienaar been more accurate with the boot, the deficit at half-time would have been greater than 14-3.
Pienaar missed three of his four penalty shots and failed to convert his own 25th-minute try after Stephen Donald and Frans Steyn had traded early penalties.
Steyn landed another one eight minutes before the break and Pienaar was replaced at half-time by Morné Steyn due to injury.
Conrad Smith was the All Blacks’ best back and his try eight minutes into the second half sparked the New Zealand fight back with Donald converting and trading penalties with Morné Steyn to leave them trailing just 20-16 before Fourie dived over for the match-winner and the two pivots slotted another penalty apiece.
“It felt like we were definitely in the contest,” skipper Richie McCaw said.
“Before that try (to Fourie) we were right in the contest and we had them at the right end of the field and were applying some pressure. We made mistakes that let them off the hook.”
“We played a bit too much rugby at times in our own quarter. It was the simple stuff that let us down and perhaps that comes from the pressure they were putting on in defence. But they are the things you can’t afford to do in Tests.”
South Africa captain John Smit had some sympathy for the opponents who had less than seven days to prepare for the match after a bruising win against Australia.
“It’s difficult to turn around from one week to the other and play at altitude,” he admitted. “It’s a great start by the Springboks and hopefully we can take it further.”
SOUTH AFRICA: F Steyn; JP Pietersen, J Fourie, J de Villiers, B Habana; R Pienaar, F du Preez; T Mtawarira, B Du Plessis, J Smit (capt), B Botha, V Matfield, H Brussow, J Smith, P Spies.
Replacements: M Steyn for Pienaar (40), J Du Plessis for Smit (65-71), D Rossouw for Botha, W Oliver for de Villiers (both 68).
NEW ZEALAND: M Muliaina; J Rokocoko, C Smith, M Nonu, S Sivivatu; S Donald, B Leonard; A Woodcock, A Hore, N Tialata, B Thorn, I Ross, J Kaino, R McCaw (capt), R So’oialo.
Replacements: O Franks for Tialata (40), P Weepu for Leonard (48), K Mealamu for Hore, K Read for So’oialo (both 53), J Eaton for Ross (64).
Referee: A Rolland (Ireland).