England, set a modest 255 for victory, finished on 256 without loss as they won with more than 15 overs to spare to go 1-0 up in the five-match series following Tuesday's tied opener at Trent Bridge.
Roy, named man-of-the-match after also completing two run-outs, was 112 unbeaten at the finish and Hales 133 not out, both batsmen recording their highest scores at this level.
Their unbroken stand surpassed England's record ODI partnership of 250 set by Andrew Strauss and Jonathan Trott for the second wicket against Bangladesh at Edgbaston in 2010.
Victory also saw England win the inaugural multi-format Super Series, with Sri Lanka now unable to surpass their 13-3 points lead in the remaining three ODIs and lone Twenty20.
Successive fours by Hales off leg-spinner Seekkugge Prasanna saw the Nottinghamshire opener to a 91-ball century.
It was the start of a thrilling sequence in which Hales scored 26 runs in five balls off Prasanna -- two fours followed by three sixes.
Roy, a ball after surviving an lbw appeal on 99, drove Prasanna down the ground for six to go to a 92-ball century including six fours and four sixes.
Prasanna's 8.1 overs cost 78 runs, with Sri Lanka captain Angelo Mathews -- who suffered a hamstring injury at Trent Bridge -- not bowling.
Earlier, Adil Rashid took two quickfire wickets as England held Sri Lanka to 254 for seven after Mathews won the toss.
Leg-spinner Rashid, unlucky to go wicketless in a return of none for 36 in 10 overs at Trent Bridge, took two for 34.
But an unbroken stand of 63 between Upul Tharanga (53 not out) and Suraj Randiv (26 not out) bolstered their total.
Danushka Gunathilaka, dropped in the slips on five, drove
two straight sixes in three balls off left-arm paceman David Willey.
But fast bowler Liam Plunkett, whose last-ball six secured Tuesday's tie, struck with his third delivery when Gunathilaka (22) was caught behind.
Rashid rocked Sri Lanka with two wickets for no runs in three balls.
Mathews fell when he top-edged a sweep to Plunkett at short fine leg.
The hampered Chandimal compiled an 80-ball fifty but was run out in search of a non-existent single.
Chandimal's injury prevented him from keeping wicket.
Kusal Perera, one of several glovemen in Sri Lanka's squad, took over behind the stumps but missed a tough early chance to catch Hales.
The series continues in Bristol on Sunday.
You’ve reached your limit of {{free_limit}} free articles this month.
Subscribe now for unlimited access.
Already subscribed? Log in
Subscribe to read the full story →
Smart Quarterly
₹900
3 Months
₹300/Month
Smart Essential
₹2,700
1 Year
₹225/Month
Super Saver
₹3,900
2 Years
₹162/Month
Renews automatically, cancel anytime
Here’s what’s included in our digital subscription plans
Exclusive premium stories online
Over 30 premium stories daily, handpicked by our editors


Complimentary Access to The New York Times
News, Games, Cooking, Audio, Wirecutter & The Athletic
Business Standard Epaper
Digital replica of our daily newspaper — with options to read, save, and share


Curated Newsletters
Insights on markets, finance, politics, tech, and more delivered to your inbox
Market Analysis & Investment Insights
In-depth market analysis & insights with access to The Smart Investor


Archives
Repository of articles and publications dating back to 1997
Ad-free Reading
Uninterrupted reading experience with no advertisements


Seamless Access Across All Devices
Access Business Standard across devices — mobile, tablet, or PC, via web or app
