Alex Hales hit 99 in Port Elizabeth to help England to a 2-0 lead in the ODI series with South Africa on Saturday.
The hosts were first with the bat as Reece Topley immediately showed signs of what was to come from him in the innings, bowling out Hashim Amla in just the third over.
Quinton de Kock, who impressed with an unbeaten 138 in the first match, was next to fall, this time contributing 22 before going out lbw to Ben Stokes.
Faf du Plessis and AB de Villiers struck up the Proteas' most fruitful partnership of the day, the former hitting 46 off just 48 balls before succumbing to Chris Jordan off a ball in from Adil Rashid. In a repeat of his dismissal in Bloemfontein three days earlier, the captain was eventually out for 76 - again to Stokes, but this time with Jordan producing a superb catch out in the field to leave the scoreboard at 205-4 with less than 10 overs remaining.
The wickets fell quickly thereafter, with JP Duminy, Rilee Rossouw and Kagiso Rabada all falling to Topley to help him to a career-best return of 4-50.
By the end of the 50th over, South Africa were 262-7 and England began in earnest as Jason Roy hit three boundaries before being bowled out by Kyle Abbott with a fine in-swinger.
Joe Root and Hales forged a strong partnership as tea approached, hitting 97 before Abbott played the Yorkshireman onto his stumps.
Skipper Eoin Morgan put himself in at four, contributing 29 from 28, while it was a day to forget with the bat for Ben Stokes as he went for a duck after six balls.
Hales was left an agonising one run short of his second ODI century when he fell in the 42nd over after De Kock's delivery grazed his bat on its way to the gloves of Abbott.
The partnership of Jos Buttler (48*) and Moeen Ali (21*) was to seal the victory with 3.4 overs to spare, however, with Buttler continuing his fine form from the first ODI with three successive sixes and Ali wrapping up proceedings with consecutive fours.
The third match of the series takes place Tuesday in Centurion.