Eoin Morgan set a new world record for the most sixes in an ODI, smashing an incredible 17 maximums on his way to 148 from 71 deliveries as England piled on the runs against Afghanistan in the Cricket World Cup.

England's captain sustained a back spasm in last week's win over West Indies, but he eased any doubts over his fitness with a sensational display of power-hitting at Old Trafford on Tuesday.

His tally of 17 sixes surpassed the previous ODI record of 16 jointly held by Shane Watson, AB de Villiers and Chris Gayle, while helping England to a new team record of 25. They had previously set the benchmark with 24 against West Indies in February.

Morgan eventually holed out to long-off in the 47th over, his extraordinary performance yielding the fourth-fastest century in World Cup history and helping the tournament hosts to an imposing total of 397-6.

Jonny Bairstow (90 from 99) and the ever-prolific Joe Root (88 off 82) also made valuable contributions with the bat for England, while Moeen Ali blasted 31 not out from just nine deliveries on his 32nd birthday.

Morgan's display was a significant factor in another record being broken in Manchester. Afghanistan leg-spinner Rashid Khan conceded an eye-watering 110 from nine wicket-less overs - the most expensive figures in a World Cup.

Only Mick Lewis, who returned 0-113 from 10 overs for Australia against South Africa in the famous Johannesburg ODI of 2006, has given up more runs in an ODI.