McCullum was out for 57 but at close of play New Zealand were 361 for seven, with Oram on 49 and Daniel Vettori 21.
New Zealand had gone to tea at 234 for six, still 26-runs shy of the follow-on mark, after South Africa had scored 459 in their first innings.
Oram and McCullum frustrated the touring side with some aggressive batting and often inventive stroke play.
McCullum dominated the partnership and became the second debutant of the match to reach a half-century after opener Michael Papps, who scored 59.
McCullum went to his half-century by deliberately edging Jacques Kallis to the third-man boundary for four. He hit another glorious boundary through the covers but in the next over the bowler got revenge.
South Africa wicketkeeper Mark Boucher took a fine catch when McCullum got an inside edge to a fully-pitched Kallis delivery. His 57 included 10 boundaries and took 78 balls.
Oram, a left-handed batsman, was given a tough time by left-hand spinner Paul Adams, who was pitching the ball in the rough outside his off-stump at the northern end of the ground.
Oram survived, while McCullum was aggressive against the bowler and forced his removal from the attack.
New Zealand lost three wickets in the session between lunch and tea after a slow morning where only 42runs were scored.
Craig McMillan became the fourth successive leg before victim of the innings when he was out to Kallis for 19.
Scott Styris, who was 38 at lunch, was joined by Chris Cairns for a 51-run partnership for the fifth wicket, with Cairns being particularly harsh with anything loose.
The patient Styris was also harsh on Pollock, but the South African all-rounder got his revenge when he clean bowled him for a New Zealand top score of 74.
Cairns went two runs later at 225 for six when he got an edge to a Makhaya Ntini ball down the leg side.
South Africa first innings: 459
New Zealand first innings
M Richardson lbw b Pollock 4
M Papps lbw b Kallis 59
S Fleming lbw b Adams 27
S Styris b Pollock 74
C McMillan lbw b Kallis 19
C Cairns c Boucher b Ntini 28
J Oram not out 49
B McCullum c Boucher b Kallis 57
D Vettori not out 21
Extras (b-8, lb-7, nb-8) 23
Total (for seven wickets, 128 overs) 361
Fall of wickets: 1-20, 2-75, 3-127, 4-172, 5-223, 6-225, 7-309.
Bowling: Pollock 25-4-75-2 (nb-6), Ntini 23-7-54-1,
Kallis 22-6-61-3, Nel 24-8-64-0 (nb-2), Adams 32-9-84-1, Rudolph 2-0-8-0.