They reached a revised Duckworth Lewis target of 101 from 25 overs with 6.5 overs to spare.
Afghanistan made 7-111 off 36.2 overs in an innings stalled and eventually ended by three rain delays.
It was just a second victory in six games for England, whose only other win was over lowly Scotland.
For much of yesterday’s game however, it looked as if the elements might add another layer of disappointment to a distinctly underwhelming campaign.
The rain delays, the last of which was two and half hours, threatened to deny England a morale-boosting win over a side that entered the game with the same 1-4 win-loss record.
Play finally resumed at 8:45pm (AEDT), just over 20 minutes before it would have been called off for insufficient time to bowl the 20 overs needed to constitute a match.
The chase was relatively uneventful, though England opener Alex Hales (37) was dropped twice at point by Najib Zadran off paceman Shapoor Zadran in the first five overs.
Hales, who hit the only two sixes of the innings, put on 83 in 13.3 overs with opening partner Ian Bell (52 not out).
Earlier, England had the good fortune to win the toss in perfect conditions for their battery of seamers.
With familiar grey skies overhead, the floodlights were switched on from the 2:30pm (AEDT) start and the first rain delay arrived little more than half an hour into the game.
Unsurprisingly, Afghanistan struggled in the conditions against the experienced new ball duo of James Anderson and Stuart Broad, who each had a wicket inside the first eight overs.
Afghanistan only found the boundary three times in their first 50 runs, which consumed 21 overs, with the ball frequently beating the outside edge.
The innings, which slumped to 4-34 in the 16th over, gained some momentum between the second and third rain delays.
Shafiqullah Shafiq (30 off 64 balls), Mohammad Nabi (16 off 17) and Najibullah Zadran (12 not out off 15), helped nudge the run rate just over three before the rain intervened a third time.
Paceman and man of the match Chris Jordan (2-13 off 6.2 overs)and medium pacer Ravi Bopara each took two wickets, with spinner James Tredwell dismissing Shafiq.
Every Afghanistan run was cheered loudly by their colourful supporters, who were louder and more visible than the few remaining members of England’s Barmy Army in the crowd of 9,203.