De Villiers showed skill and superb control as he reached a hundred in just 75 balls —the second fastest by a South African — and ended with 121 off 85 deliveries as the home side smashed 354 for six, their highest score against England and equalling their best at Newlands.
South Africa’s previous highest total against England was 311 for seven in East London in 2004/5. The fastest one-day century for South Africa is in 44 balls by Mark Boucher against Zimbabwe in 2006.
South Africa won the toss and openers Graeme Smith and Hashim Amla ensured they made a flying start with a stand of 107 off 111 balls.
Captain Smith was bowled by Luke Wright for 54 off 56 deliveries, while Amla batted with application and wristy elegance through to the 32nd over when he edged Stuart Broad to wicketkeeper Matt Prior for 86.
De Villiers reached his century in the 44th over and went on to make the highest score by a South African against England, beating the 118 Herschelle Gibbs made in Durban in 2005.
The 25-year-old shared in stands of 94 with Amla and 95 with Alviro Petersen (51 not out) as South Africa made full use of the powerplay overs.
Broad claimed four wickets for England, but was punished for 71 runs in his 10 overs.
England openers Andrew Strauss and Luke Wright played some breathtaking strokes as they raced to 41 in 5.3 overs, but returning fast bowlers Wayne Parnell and Morne Morkel then reduced the visitors to 58 for three.
Kevin Pietersen and Paul Collingwood shared a gritty 84-run partnership until part-time off-spinner JP Duminy removed Pietersen, sweeping a ball back on to his stumps, for 45.
Then Eoin Morgan went for a duck when 12th man Johan Botha sprinted in from the long-off boundary and caught him low to the ground off the same bowler.
Collingwood was the one batsman to master the South African attack, scoring 86 off 82 balls before he was caught at deep mid-on off by Parnell.
Parnell, who claimed a career-best five for 48, and Morkel (three for 39) wrapped up the tail as England were all out for 242 in the 42nd over.
South Africa next play England in Port Elizabeth on Sunday and the final match is in Durban on Dec. 4. The first game of the five-match series was washed out.
SCOREBOARD
South Africa beat England by 112 runs to level the five-match one-day international series 1-1 after three matches.
South Africa won the toss and elected to bat.
South Africa innings
H. Amla c Prior b Broad 86
G. Smith b Wright 54
A. de Villiers c Trott b Broad 121
J-P. Duminy c Morgan b Wright 6
A. Petersen not out 51
M. Boucher c Wright b Broad 22
R. McLaren b Broad 0
Extras (b-2, lb-4, w-8) 14
Total (for six wickets, 50 overs) 354
Fall of wickets: 1-107, 2-201, 3-217, 4-312, 5-349, 6-354.
Did not bat: R. van der Merwe, M. Morkel, W. Parnell, D. Steyn.
Bowling: Anderson 7-0-55-0 (1), Broad 10-0-71-4 (w-1), Bresnan 10-0-61-0(w-1), Swann 9-0-49-0, Collingwood 5-0-38-0 (w-1), Wright 8-0-66-2, Trott 1-0-8-0.
England innings
A. Strauss c Boucher b Morkel 24
L. Wright c McLaren b Parnell 24
J. Trott c Smith b Parnell 9
K. Pietersen b Duminy 45
P. Collingwood c Amla b Parnell 86
E. Morgan c sub (Botha) b Duminy 0
M. Prior c Smith b Morkel 16
T. Bresnan c Smith b Morkel 7
S. Broad b Parnell 10
G. Swann not out 6
J. Anderson lbw b Parnell 1
Extras (lb-4, w-10) 14
Total (all out, 41.3 overs) 242
Fall of wickets: 1-41, 2-58, 3-58, 4-142, 5-150, 6-214, 7-223, 8-227, 9-236, 10-242.
Bowling: Steyn 6-0-42-0, Parnell 9.3-1-48-5 (w-1), Morkel 9-1-39-3 (w-2), McLaren 5-0-34-0, Van der Merwe 6-0-50-0 (w-2), Duminy 6-0-25-2 (w-1).
First ODI – Match abandoned without a ball bowled
Second ODI – England beat South Africa by seven wickets
Third ODI – South Africa beat England by 112 runs
Fourth ODI – Port Elizabeth, Nov. 29
Fifth ODI – Durban, Dec. 4