England lost three wickets for only 17 runs to make an unlikely one-day international chase of 354 for six still more difficult at Newlands tonight.
Responding under lights to a ground record-equalling total, England began promisingly after Luke Wright had been promoted to open the batting alongside Andrew Strauss.
But having seen AB de Villiers (121) dominate a home innings which included three other half-centuries, England lost their openers for 24 each - and then Jonathan Trott more cheaply on the way to 81 for three after 15 overs.
Wright plundered early boundaries - including a six over long-on off Dale Steyn - only to get a pull at Wayne Parnell high on the bat to be caught at deep square-leg.
Strauss then edged behind some full-length swing from first change Morne Morkel - and on what used to be his home ground, Trott followed in the next over without addition.
After making 87 as a replacement opener in England's seven-wicket win at Centurion last weekend, he could manage only nine before edging an attempted drive at Parnell to be very well caught by Graeme Smith - diving to his left at slip.
At a venue which dramatically favours the team batting first in day-night fixtures, England's prospects of pushing South Africa close were not obvious - in pursuit of a win which would put them in an unbeatable 2-0 lead in this series.
If they were to do so, it seemed certain one of fourth-wicket pair Kevin Pietersen on Paul Collingwood would have to make a major contribution.
De Villiers had earlier struck a memorable fourth ODI hundred to help his team equal the highest total here.
Openers Hashim Amla (86) and Smith (54) provided the platform - but it was De Villiers who was the enforcer with some increasingly inventive strokeplay.
Among some audacious and other superbly-executed orthodox shots was an innovative 'ramp' off Stuart Broad (four for 71) over fine third-man, which was the signal for him and Alviro Petersen (51no) to up the ante in the batting powerplay.
The number three reached the crease in the 19th over, after a 107-run stand, and by the 44th was into three figures with 10 fours from only 75 balls.
Broad picked up two cheap wickets in the final over. But 109 were still added in the last 10.
Cape Town: South Africa v England
South Africa: G C Smith (Capt), H M Amla, A B de Villiers, J P Duminy, R J Peterson, M V Boucher (Wkt), M Morkel, R McLaren, R van der Merwe, D W Steyn, W D Parnell.
England: A J Strauss (Capt), I J L Trott, K P Pietersen, P D Collingwood, E J G Morgan, M J Prior (Wkt), L J Wright, T T Bresnan, G P Swann, S C J Broad, J M Anderson.
South Africa won toss and decided to bat
Umpires: M Erasmus and R J TuckerReuse content