Hashim Amla struck a superb 150 as South Africa posted a formidable total in the second one-day international against England.

Opener Amla, who sapped England's spirit with a triple century at the start of the Test series, hit 16 fours in 124 balls to see his side to 287 for five.

He had some good fortune, dropped by Craig Kieswetter on 42 and 92 while Samit Patel had half a chance to run him out on one, but he showed unflappable concentration and a wide array of shots to register his 10th century in the format. Amla's total also made him the quickest ever batsman to 3,000 ODI runs.

Batting had initially appeared to be an awkward endeavour as James Anderson and Steven Finn sent down a testing spell with the two new balls. But, having conceded just 11 runs from the first five overs, England suddenly shipped 38 from the next five.

Graeme Smith kicked things off with the first four of the day, straight down the ground off Finn, and Amla followed with a streaky inside edge to fine leg. Smith then milked Finn's fourth over for 10 and a couple of edges for four kept the scoreboard ticking along briskly.

As the field spread, South Africa began to collect regular singles, Smith bringing up his half-century from 70 balls and Amla coasting along at a run a ball. The bowling powerplay brought the wicket, Smith (52) mistiming a pull against Tim Bresnan and Kieswetter haring backwards to take the catch.

An easy single brought up the Proteas' hundred and England lost their only review on an ill-judged lbw appeal from Anderson against Amla. The opener did not do everything right, though, and was responsible for JP Duminy's run out for 14. New man Dean Elgar then made a scratchy 15 before Graeme Swann pegged back his off stump with a fine ball.

Amla punched Bresnan for his seventh four as he moved through the 70s and was joined by AB de Villiers. The South Africa skipper had a life when Kieswetter grassed another catch off the bowling of Bresnan. Together they added 38 between the 36th and 40th over, though Kieswetter again dropped Amla on 92 to deny Finn.

An uppercut for four and a pair of singles brought up his century in 96 deliveries and the 29-year-old celebrated in typically understated fashion. De Villiers was mystifyingly given not out despite clearly hitting the ball on its way through to Kieswetter but he added only six more runs before Swann bowled him for 28.

Amla upped the ante in the last five overs, going after Anderson and picking up 13 runs from Bresnan's wayward last over before finally departing with two balls of the innings remaining. Finn was the bowler but Amla took all the plaudits as he left the pitch to a standing ovation.