Captain Andrew Strauss defied a lively South African attack to steer England to 88 for one on the second day of the first Test on Thursday.
South Africa made 418 in their first innings and claimed an early wicket when Friedel de Wet had Alastair Cook caught behind for 15 but the hosts failed to make another breakthrough.
Strauss reached the close on 44 not out with Jonathan Trott on 18 after South Africa's last five wickets had added 138 runs and England off-spinner Graeme Swann completed his third five-wicket haul in Tests.
"There's no reason we can't press for a result but obviously we'll have to bat really well," England fast bowler Graham Onions told a news conference. "It was a tricky final session, we could have been four down, but the guys batted really well.
"We now have a great opportunity to bat all day tomorrow and build a big total."
The hosts resumed in the morning on 262 for four and England removed Jacques Kallis for 120 and JP Duminy for 56, both caught in the slips by Paul Collingwood, to reduce South Africa to 330 for six at lunch.
"The pitch was quite tough so scoring 120 is pretty satisfying and I thought we did well to get to 418," Kallis said.
"I feel like I'm pretty close to my peak, I've been playing with more aggression and freedom in the last four to five years. I think my batting's as good as it's ever been."
Onions dropped Mark Boucher on 25 at fine leg off Stuart Broad and the wicketkeeper had moved on to 49 when he was caught at short-leg off Swann, one run short of his 30th Test half-century.
REVIEW SYSTEM
Morne Morkel used the umpire decision review system to overturn an lbw appeal by Swann but he edged Onions to wicketkeeper Matt Prior for 13.
The obdurate Harris hung around stubbornly for two hours and collected four boundaries in his 38 while De Wet celebrated his debut by getting off the mark with a superb cover-drive for four off Swann.
Onions eventually found a way through Harris's defences to bowl him via the inside edge and De Wet had reached 20 when Swann spun a delivery past his bat to trap him lbw and complete figures of five for 110. Onions was the most successful of the fast bowlers with three for 86.
Cook was deceived by a De Wet delivery angled across him and edged a simple catch to Boucher but Strauss looked in good touch and struck six crisp fours.
"It was very disappointing the way we bowled tonight, there were too many freebies, too many four-balls," Kallis said.
"The bowlers erred in being a little too straight, but if we can land the ball in the right places tomorrow, then it will be tough for batting again."
Scorecard
South Africa (1st innings):
G. Smith c Prior b Broad 0
A. Prince c Collingwood b Swann 45
H. Amla c Collingwood b Onions 19
J. Kallis c Collingwood b Anderson 120
A. de Villiers c Cook b Swann 32
J-P. Duminy c Collingwood b Swann 56
M. Boucher c Cook b Swann 49
M. Morkel c Prior b Onions 13
P. Harris b Onions 38
F. de Wet lbw b Swann 20
M. Ntini not out 4.
Extras: (b-2, lb-15, w-5) 22
Total: (all out, 153.2 overs) 418
Fall of wickets: 1-1, 2-51, 3-93, 4-159, 5-283, 6-316, 7-341, 8-377, 9-414, 10-418.
Bowling: Anderson 37-9-104-1 (w-1), Broad 32-8-74-1 (w-2), Onions 30-5-86-3 (w-2), Swann 45.2-10-110-5, Collingwood 7-1-18-0, Trott 2-0-9-0.
England (1st innings):
A. Strauss not out 44
A. Cook c Boucher b De Wet 15
J. Trott not out 18
Extras: (lb-1, nb-5, w-5) 11
Total: (for one wicket; 23 overs) 88
Fall of wicket: 1-25.
Bowling: Ntini 7-1-18-0, De Wet 7-0-46-1 (nb-3, w-5), Morkel 4-0-12-0 9 (nb-2), Harris 5-2-11-0.
To bat: K. Pietersen, P. Collingwood, I. Bell, M. Prior, S. Broad, G. Swann, J. Anderson, G. Onion.