Surrey's South African-born opener took centre stage on his home county ground and hammered the second highest individual one-day score by an England batsman on Wednesday (June 29).
His fireworks lit up the gloomy, rain-filled South London skies to ensure England captured the series at The Oval.
His second hundred in three ODI games, 162 runs off 118 including 13 fours and three sixes, helped England clinch a six wicket win with overs to spare as they chased down their revised victory target of 308 with ease.
And they clinched the series 2-0 with just one game left in Cardiff on Saturday. It was England's second highest successful one-day run chase - and they did it in 42 overs.
Sadly for Roy he fell just five runs short of overtaking the highest score by an England batsman with another Robin Smith's 167 not out against Australia at Edgbaston in 1993 still holding firm.
He was bowled by Nuwan Pradeep with England in sight of the finishing line. Jonny Bairstow and Jos Buttler saw them home with 11 balls remaining.
At Edgbaston, Roy was accompanied by fellow opener Alex Hales who also made an unbeaten ton in that match. But this time he was helped mainly by Joe Root, whose 65 showed a return to form for the Yorkshireman who had struggled recently and had gone six games with just one score over 11.
But if Root had his mojo back, Roy merely continued in the kind of vain which has made him one of the world's most destructive and stylish one-day performers.
A back injury to Alex Hales during Sri Lanka's innings of 305-5 off a reduced number of overs due to the rain meant Moeen Ali had to open with Roy instead.
But Roy shrugged off the early loss of Ali, for just two, and the batsman cut and carved the Sri Lankan attack apart. England raced out the blocks needing more than seven an over, and Roy ensured they were always up with the required rate the skies still dark and threatening to rain once more.
Root departed, a lazy top edged sweep saw him caught by Nuwan Pradeep off Danushka Gunathilaka, and his 149-run second wicket partnership with Roy came to a sad end.
Morgan looked well set until he was superbly caught by the diving Gunathilaka for 22 off Suranga Lakmal with England on 221. Roy was joined by Jonny Bairstow and reached 150 but was kicking himself when he was bowled by Pradeep with England so close to the finishing line.
Earlier, Sri Lanka had produced their best batting display of the series so far with four men hitting half centuries.
The tourists recovered from losing opener Kusal Perera in the second over, run out by Jonny Bairstow for just a single, to give England's attack the run around.
Morgan chose to field first and he may have been regretting it for a while as Gunathilake and Kusal Mendis put on 128 for the second wicket off just 111 balls. Mendis was struck 13 boundaries in his 77 while Gunathilaka was also aggressive with seven fours in his 62.
The persistent rain finally came down hard enough to force the players from the field for a two and a half hour delay with Sri Lanka on 127-1 from 18.1 overs at the time.
England fought back with Adil Rashid claiming the wickets of Mendis (77) and Gunathilaka (62) but England still had to deal with the in-form Chandimal (63) and his captain Angelo Matthews (67 not out) who picked up the gauntlet and helped Sri Lanka amass 305-5 from 42 overs.
England's target was revised up by just three runs but with Roy building up a full head of steam they cruised home comfortably.