Roy struggled in tricky conditions in Dhaka but bloomed as his innings progressed, recording his first ton in the subcontinent and 12th overall, moving up to joint third in the all-time England list.
He shared a 109-run stand with Jos Buttler, who scored 76 off 64 balls, while there were late cameos from Moeen Ali (42 off 35) and Sam Curran (33no off 19) as England surged to 326 for seven.
After Curran took three wickets in five balls at the outset of the reply, Rashid ripped through the middle order to finish with four for 45, as Bangladesh subsided to 194 all out, and a 132-run thumping guarantees their first ODI series loss at home since 2016 as England went 2-0 up with one to play.
Rashid’s performance was all the more impressive given he spent the previous evening being grilled via video link at a Cricket Discipline Hearing, in which he repeatedly corroborated Azeem Rafiq’s claim that former England captain Michael Vaughan had allegedly made a racist remark at Yorkshire in 2009.
Curran wrapped up an England win to finish with four for 29 as last year’s T20 World Cup player of the final and tournament underlined his credentials for the 50-over version in the autumn.