|De Villiers (left) and Amla steadied the ship for South Africa [GALLO/GETTY]
A century by Hashim Amla put South Africa in a strong position on the fourth day of the first Test against England at Centurion after the tourists had threatened an upset in a blistering bowling spell in the morning.
South Africa made 301 for seven declared in their second innings, setting England a target of 364 to win.
England were 11 for one at the close on Saturday, with captain and top batsman Andrew Strauss falling to Morne Morkel in their second over, leaving the tourists to face a challenging final day on a pitch of uneven bounce.
It was not only Amla's innings of exactly 100 that gave South Africa hope of clinching victory but the manner of his dismissal.
He was bowled by James Anderson in the first over with the second new ball by a delivery which barely rose above ankle height and crashed into the bottom of his off stump.
The previous ball, which landed on almost the same spot, rose above stump height. Enough to fox a man who more than had his eye in after a cultured knock.
Anderson was bowling from the southern Hennops River end from which the bounce has been unpredictable for much of the match.
South Africa first innings 418
England first innings 356
South Africa second innings (o/n 9-1)
A Prince b Anderson 0
G Smith b Onions 12
P Harris b Anderson 11
H Amla b Anderson 100
J Kallis c Cook b Broad 4
A de Villiers c Bell b Broad 64
JP Duminy lbw b Anderson 11
M Boucher not out 63
M Morkel not out 22
Total (for 7 dec, 85.5 overs) 301
FoW 1-2 2-20 3-34 4-46 5-165 6-191 7-266
England second innings
A Strauss c Boucher b Morkel 1
A Cook not out 4
J Anderson not out 6
Total (for 1; six overs) 11
South Africa were in trouble when each of England's fast bowlers struck as three wickets fell for 37 runs at the start of the day to reduce the hosts to 46 for four.
But Amla and an anchoring 64 from De Villiers put on 119 for the fifth wicket with some enterprising batting.
Then Mark Boucher joined Amla in a seventh wicket stand of 75 off only 108 balls before Boucher and Morkel added a quick 35 off four overs before the declaration.
Boucher finished on 63 not out.
Anderson struck in the third over of the day when nightwatchman Paul Harris was bowled off his thigh pad for 11.
South African captain Graeme Smith never looked comfortable against accurate bowling by Anderson and Graham Onions and he fell to Onions five overs later when he pushed forward defensively and was bowled off an inside edge for 12.
First innings century maker Jacques Kallis made only four before he pulled Stuart Broad to Alastair Cook on the square leg boundary.
Amla and De Villiers both survived unsuccessful calls for review by the television umpire after lbw appeals by off-spinner Graeme Swann and Onions were turned down.
It meant that England had used up both their options for reviews during the innings.
De Villiers in particular made light of tricky batting conditions as the pair posted a century partnership off 164 balls.
He made his runs off 101 balls with six fours and a six before he was caught by a diving Ian Bell at short cover when he drove at Broad.
Amla went on to his seventh Test century off 210 balls with ten fours but faced only three more deliveries before he was dismissed.
Boucher was in sparkling form as he made his 63 not out off 72 balls with nine fours and a six.
Morkel cracked an unbeaten 22 off 13 balls, including 18 in an over from Broad.
Sharing the new ball with Makhaya Ntini he made his second delivery lift sharply and move away from Strauss, who edged it to wicketkeeper Boucher.