Bangladesh seized the initiative early on, reducing the visitors to 63-3 inside 13 overs before Stokes propelled the visitors forward.
Stokes hit 101 off 100 balls with eight fours and four sixes and was dismissed just after completing his century by nudging paceman Shafiul Islam towards midwicket for a quick single.
A miscued pull shot in the next over landed in the safe hands of Sabbir Rahman at deep-midwicket as Bangladesh skipper Mashrafe Mortaza ended Stokes' onslaught.
Duckett, batting at one-down position in his first go at international cricket, showed his composure to hit 60 off 78 balls thanks to four boundaries.
More From This Section
England slowed down after the rapid departure of Duckett and Stokes but skipper Jos Buttler ensured momentum was not completely lost by smashing 63 off just 38 balls to take his side past the 300-run mark.
Shakib Al Hasan dismissed Buttler, who clubbed three fours and four sixes, in the final over for his second wicket. Skipper Mortaza and Shafiul also grabbed two wickets each for Bangladesh.
Jason Roy, who shared 41 runs with Vince in the opening stand, appeared confident and played a few positive strokes before he fell to Shakib for 41 off 40 balls as Sabbir Rahman took a well-judged catch at long-off.
Sabbir showed his agility in the field when he ran out Jonny Bairstow for a duck with a direct throw from mid-off in the next over.
But the host bowlers, especially the spinners, had no answer to Stoke's initial attack as the Englishman struck three of his four sixes before completing his half-century off 45 balls.
Roads adjacent to the ground were kept off-limits for bystanders while security personnel were deployed around the stadium.