New Zealand were 157 for four at the close, still 247 runs short of avoiding a second consecutive innings defeat, after being forced to follow on 404 runs behind.
Dale Steyn took five for 17 as New Zealand were bowled out for 121 in their first innings.
Left-arm spin bowler Robin Peterson took the first two wickets in the second innings and fast bowler Rory Kleinveldt followed up with two wickets off successive deliveries.
New Zealand wicketkeeper BJ Watling followed up an impressive first innings of 63 - more than half his team's total - with 41 not out as he shared an unbeaten fifth wicket stand of 73 with Dean Brownlie (44 not out) to delay South Africa's progress.
On a hot, sunny day, in contrast to the overcast, swing-friendly conditions in which New Zealand crashed to 47 for six on Saturday, South Africa were made to work far harder for their wickets.
But they made steady progress and will be able to call for the second new ball 13 overs into the fourth day’s play on Monday.
Captain Brendon McCullum and Martin Guptill made a cautious start in the second innings as New Zealand set out to try to avoid their second successive innings defeat.
They saw off the new ball attack of Steyn and Morne Morkel as they put on 40 for the first wicket. But McCullum fell to Peterson for the third time in as many innings to provide South Africa with their first breakthrough.