New Zealand all-rounders Chris Cairns and Jacob Oram punished the South Africa attack to put the home side well in command after the third day of the second Test on Saturday.
At the close, New Zealand had amassed 584 for eight wickets, a lead of 288, thanks largely to a record seventh wicket partnership between Cairns and Oram.
The pair added 225, with Cairns recording his highest Test score of 158 before he lofted a catch to Jacques Kallis at long off.
The quick-fire knock was compiled off 171 balls in 214 minutes and included 18 fours and seven sixes.
In the process he passed 3,000 Test runs, the second New Zealand batsman of the day to do so after Craig McMillan achieved the feat shortly after lunch.
"If it sets the game up and we get a victory then it's good," Cairns said, while admitting that the pitch was playing well.
"It is hard work out there for the bowlers mainly because of the lack of bounce and it is playing much better than it did on the first and second days," he said.
Cairns added that he was happy to pass the 3,000-runs scored mark.
"It's not until you cross the line that you can reflect on it, and while it was nice I just need to get this bloody wicket, so I can put these milestones to bed," he said alluding to his 199 Test wickets.
Cairns and Oram, who was eventually bowled by Makhaya Ntini 10 runs short of a second Test century, decimated the limited South Africa bowling attack and took a little over 45 overs to compile their partnership.
New Zealand had resumed on 201 for three and South Africa managed to dismiss Friday's hero Scott Styris for 170 shortly before lunch.
Styris, who began the day on 118, went past his previous highest test score of 119 in the second over of the morning and progressed steadily before edging a ball from left-arm spinner Nicky Boje to Shaun Pollock at slip.
"It was a lazy shot. I was looking to run it into cover for a single and I stretched too far. Silly really," Styris said.
McMillan and Styris figured in a fourth wicket partnership of 148 in 158 minutes.
McMillan took a time to get going from his overnight 31, but achieved his 19th Test half-century off 93 balls with seven fours and a six.
He passed the 3,000 Test run milestone just after New Zealand had taken a first innings lead at 296, but was soon out, playing on to Shaun Pollock for 82.
"I did not enjoy that too much today," Proteas captain Graeme Smith said. "It's the first time in my captaincy that we've toiled without much success and no, I did not like it."
Smith said the hammering his bowlers took made it difficult for them to come back for their third or fourth spells.
"Our bowlers ran out of steam and it wasn't easy for them to come back.
Only Makhaya (Ntini) was willing at the end," he said.
Smith said the only way for South Africa to salvage something out of the match was to bat well and to bat long.
"We've had to do that in the past and we've succeeded. So that gives us plenty of motivation. It will be important to keep scoring to try and offset whatever deficit they leave us with," Smith said.
South Africa began the Test with an opening partnership of 177 between Herschelle Gibbs and Smith but were bowled out for 296.
With two days remaining, the tourists face a tough task to avoid falling behind in the three-match series after drawing the first test in Hamilton last week.
South Africa first innings 296 (G.Smith 88, H.Gibbs 80; C.Martin 6-76)
New Zealand (overnight 201-3)
M.Richardson c Gibbs b Kallis 45
M.Papps c Boje b Pollock 0
S.Fleming c Kallis b Ntini 4
S.Styris c Pollock b Boje 170
C.McMillan b Pollock 82
B.McCullum b Ntini 13
C.Cairns c Kallis b Smith 158
J.Oram b Ntini 90
D.Vettori not out 2
D.Tuffey not out 5
Extras (lb-10 nb-5) 15
Total (for eight wickets, 144 overs) 584
Fall of wickets: 1-5, 2-12, 3-137, 4-285, 5-314, 6-349, 7-574, 8-578.
Bowling: Pollock 30-5-111-2 (nb-1), Ntini 34-7-101-3 (nb-4), Terbrugge 22-4-93-0, Kallis 23-1-108-1, Boje 22-2-108-1, McKenzie 2-0-8-0, Rudolph 6-0-26-0, Smith 5-0-19-1