Afghanistan slipped to 104-3 after 25 overs in their attempt to chase the imposing target of 398 set by England in their World Cup match at Old Trafford on Tuesday.
Rahmat Shah was caught in the deep off Adil Rashid for 46 to end a 52-run third-wicket stand with Hashmatullah Shahidi, who remained not out on 18.
They lost a wicket in the second over with 4 on the scoreboard when Jofra Archer bowled Noor Ali Zadran (0).
Afghanistan skipper Gulbadin Naib scored 37 in a 48-run second-wicket stand before he top-edged an attempted pull shot against Mark Wood and was well caught by wicket-keeper Jos Buttler running toward fine leg and diving to complete the dismissal.
Afghanistan are chasing the sixth highest total ever at a World Cup.
Earlier, England captain Eoin Morgan set a new world record for most sixes in a one-day international innings as the World Cup hosts piled up 397 for six.
Morgan hit 17 sixes in his career-best 148, with England’s total of 25 sixes also a new world record.
Morgan, dropped on 28, dominated a third-wicket stand of 189 with Joe Root (82), whose contribution to their partnership was a mere 33.
Afghanistan star leg-spinner Rashid Khan set an unwanted record with 0-110 in nine overs — the most expensive return at a World Cup and second costliest in all ODI cricket.
Morgan’s tally surpassed the record of 16 sixes in an ODI innings previously shared by India’s Rohit Sharma, South Africa’s AB de Villiers and West Indies’ Chris Gayle.
But one ball after launching Gulbadin Naib for the record-breaking six, Morgan holed out off the Afghanistan captain to end a 71-ball innings that also featured four fours.
His innings, which featured 118 runs in boundaries, was all the more impressive as Morgan had been doubtful for this match with a back spasm suffered in England’s eight-wicket win over the West Indies, in which he could not bat.
Jonny Bairstow (90) got England off to a solid start after Morgan won the toss, with the home side accelerating after James Vince fell for 26 when he mishooked paceman Dawlat Zadran to short fine-leg.
Rank outsiders Afghanistan, yet to win a game at this tournament, did not help themselves with some woeful outfielding.
Bairstow was untroubled until, and in sight of his eighth ODI century, he chipped a return catch to Naib.
A visibly annoyed Bairstow walked off having been in command during a 99-ball innings that featured eight fours and three sixes.
Morgan settled in quickly, hitting Naib for two sixes including a fine hit over long-on.
But the left-hander should have been out when he skied Rashid Khan only for Dawlat Zadran at deep midwicket to make such a mess of the catch that the ball bounced out of his hands and over the rope for four.
It was a costly error, with Morgan immediately hitting a soaring six. He cleared the boundary again in a 36th over that cost 18 runs.
Morgan then went to fifty with his fifth six in 36 balls faced when he pulled off-spinner Mohammad Nabi high into an 8,000-capacity temporary stand.
Root was denied a second successive hundred and third of the tournament when he holed out off Gulbadin, whose three for 68 was not a bad return in the circumstances.
But the sixes kept coming, with Moeen Ali setting a new team record when he launched the penultimate delivery of the innings, from Dawlat, over long-on.
England: Jonny Bairstow, James Vince, Joe Root, Eoin Morgan (capt), Ben Stokes, Jos Buttler (wkt), Moeen Ali, Chris Woakes, Adil Rashid, Jofra Archer, Mark Wood
Afghanistan: Noor Ali Zadran, Gulbadin Naib (capt), Rahmat Shah, Hashmatullah Shahidi, Asghar Afghan, Mohammad Nabi, Najibullah Zadran, Ikram Alikhil (wkt), Rashid Khan, Dawlat Zadran, Mujeeb Ur Rahman
Umpires: Paul Reiffel (AUS), Joel Wilson (WIS)
TV umpire: Marais Erasmus (RSA)
Match referee: Ranjan Madugalle (SRI)