Alex Hales was cruelly denied a century as England opened up a 2-0 lead over South Africa in their second ODI contest at St George's Park. The Nottinghamshire opener, who endured a desperately disappointing Test series, was dismissed for 99 as the tourists secured a five-wicket victory with 3.4 overs to spare in Port Elizabeth.

The hosts got off to a difficult start after winning the toss and choosing to bat first, losing former Test captain Hashim Amla, who made six in the first ODI, for just four runs as he was bowled by Reece Topley. Quinton de Kock added 22 before being trapped lbw by Ben Stokes, while Faf du Plessis was four short of his half-century when an outside edge off Adil Rashid found Chris Jordan at slip to leave South Africa on 98-3.

AB de Villiers then dug in impressively and looked likely to record a 24th ODI ton, only for Jordan to take a trademark wonderful catch after the home skipper had skied a ball from Stokes. The wicket of JP Duminy soon followed when he was given out lbw, although subsequent replays showed that Topley's delivery looked to be drifting wide of leg stump. Rilee Rossouw could only reach 11 before he was also controversially dismissed with the aid of an umpire's review after wicket-keeper Jos Buttler had taken a brilliant one-handed catch.

Topley was the bowler responsible and he secured his fourth victim of the day when Kagiso Rabada drove an off cutter into the hands of Eoin Morgan at backward point. Farhaan Behardien and Kyle Abbott contributed 30 more between them as the Proteas ended their 50 overs at 262-7.

England's innings began with a reprieve as Jason Roy was dropped in the very first over. The Surrey batsman failed to make the most of that second opportunity, however, making just 14 before being bowled by Kyle Abbott. That dismissal led to the introduction of Hales, who formed a productive partnership with Joe Root before the latter was also removed by Abbott for 38.

Skipper Morgan went for 29 when he was caught in the deep by De Villiers off Morne Morkel, and replacement Ben Stokes got out to the same man for a six-ball duck in the next over when he played on to his own stumps. Hales, who had earlier survived a desperate review from De Kock, finally fell just one run shy of his 100 when he gloved Abbott's delivery behind. That was to be the last wicket of the day as last week's hero Jos Buttler and Moeen Ali scored 48 and 21 respectively to secure an impressive victory.

England can clinch the series with a third consecutive win in Centurion on Tuesday 9 February. The final two ODIs take place in Johannesburg and Cape Town before two Twenty20 contests close the tour.