Following a surprise defeat by Pakistan, which followed England´s opening 104-run rout of South Africa, captain Eoin Morgan urged the hosts to “stick to what we do well”.
Tournament favourites England, whose rise to the top of the one-day international rankings since Bangladesh knocked them out of the 2015 World Cup has been based on aggressive batting, lived up to his words.
Roy´s 153 took England to an imposing 386 for six, leaving Bangladesh needing to surpass Ireland´s 329-7 against England in 2011, the highest score by any team batting second to win a World Cup match.
Despite Shakib Al Hasan´s 121 — just the third Bangladesh World Cup hundred after Mahmudullah made two in 2015 — the Tigers were never in the hunt.
On a Sophia Gardens ground where they famously beat Australia in a 2005 ODI, Bangladesh were eventually dismissed for 280 with seven balls to spare.
Their chase got off to a bad start when fast bowler Jofra Archer (3-29) dismissed Soumya Sarkar for two with a ball that clipped the top of the left-hander´s off stump.
Archer, whose 10 wicketless overs against Pakistan cost 79 runs, was far more threatening on Saturday as he reached speeds of 95 miles (153 kilometres) per hour.
But Shakib anchored the innings, flicking Archer for six on his way to a 95-ball century that also included nine fours.
Shakib put on 106 with Mushifqur Rahim (44), a partnership that ended when Roy, who dropped a straightforward chance against Pakistan, held a good catch at point.
And 169-3 soon became 170-4 when Mohammad Mithun fell for a duck after edging leg-spinner Adil Rashid to wicket-keeper Jonny Bairstow.
The Test gloveman was behind the stumps after Jos Buttler suffered a hip injury during a typically dashing 64.
Shakib, who had hit fifties in a win over South Africa and a loss to New Zealand this World Cup, was eventually yorked by Ben Stokes to leave Bangladesh on the brink of defeat.
Pace bowling all-rounder Stokes followed up to finish with figures of 3-23.