New Zealand limped to 33 for two at tea on day two of the first test against South Africa on Thursday, still 269 runs adrift of the hosts who declared on 347 for eight.
The Black Caps' second innings got off to the worst possible start when opener Martin Guptill clipped a leg-side delivery from Dale Steyn straight to mid-wicket in the first over.
Captain Brendon McCullum and Kane Williamson dug in to prevent the touring side from collapsing as they did when bowled out for 45 on the opening day, a performance described as a "humiliation" in the New Zealand media.
Williamson should have been out in the eighth over as umpire Ian Gould turned down a massive lbw appeal from Vernon Philander who took five wickets in the first innings.
Captain Graeme Smith's failure to call for the review proved costly as replays showed that the decision would have been reversed.
Two overs later Philander did call for a review for a caught behind, but replays were inconclusive and Williamson survived again.
Williamson's gritty innings did end in the penultimate over before tea as Jacques Kallis had him caught at second slip for 15 with the score on 29.
McCullum stood firm to reach the interval on 17 not out.
South Africa, resuming after lunch on 335 for six, looked to increase the run rate and AB de Villiers struck a fine off-drive from Chris Martin to the fence.
But De Villiers was bowled by Martin for 67 and the innings lasted just eight more deliveries before Smith called for the declaration after Robin Peterson had also been bowled by Martin.
New Zealand bowled better in the morning session and made the ideal start when Trent Boult forced Alviro Petersen to play on after adding just three runs to his overnight score of 103.
Early morning rain had cleared two hours before the start of play, but the ominous grey skies remained for much of the morning and De Villiers and Faf du Plessis had to survive an awkward period in which the pitch offered the seamers lateral movement.
The disciplined bowling from the Black Caps soon accounted for Du Plessis, whose test average of 146.50 after two matches took a hit when Martin had him caught at gully for 15 with the score on 281.
Dean Elgar received an ironic ovation from the home crowd when he made his first run in test cricket at the third time of asking.
The pair remained resolute in testing conditions, though, and the decision by New Zealand to take the new ball only succeeded in breaking the shackles as De Villiers brought up his 30th test fifty with consecutive boundaries off Boult.
Boult dismissed Elgar just before lunch when he edged a catch to wicketkeeper BJ Watling for 21.
South Africa v New Zealand - first test scoreboard
Scoreboard at tea on the second day of the first test between South Africa and New Zealand at Newlands on Thursday.
New Zealand won the toss and elected to bat
New Zealand first innings 45 (V. Philander 5-7, M. Morkel
South Africa first innings (overnight 252-3)
G.Smith lbw b Bracewell 1
A.Petersen b Boult 106
H.Amla lbw b Franklin 66
J.Kallis c Watling b Boult 60
A.B.De Villiers b Martin 67
F.du Plessis c Williamson b Martin 15
D.Elgar c Watling b Boult 21
R.Peterson b Martin 5
V. Philander not out 0
Extras (b-1, lb-2, w-2, nb-1) 6
Total (eight wickets declared, 95.2 overs) 347
Fall of wickets: 1-1 2-108 3-212 4-255 5-281 6-335 7-342
Did not bat: Dale Steyn, Morne Morkel
Bowling: Boult 21-2-78-3 (1w), Bracewell 24-4-93-1, Martin
19.2-4-63-3 (nb-1, 1w), Franklin 14-1-50-1, Patel 17-4-60-0
New Zealand second innings
M. Guptill c Amla b Steyn 0
B.McCullum not out 17
K.Williamson c Petersen b Kallis 15
D.Brownlie not out 0
Extras (lb-1) 1
Total (two wickets, 19 overs) 33
Fall of wickets: 1-0 2-29
To bat: Daniel Flynn, James Franklin, BJ Watling, Doug
Bracewell, Jeetan Patel, Trent Boult, Chris Martin
Bowling (to date): Steyn 6-1-13-1, Philander 5-3-6-0, Morkel
6-2-11-0, Kallis 2-1-2-1
Follow Emirates 24|7 on Google News.