England 239 for 4 (Salt 77, Roy 73) beat Netherlands 235 for 7 (Edwards 78, Willey 2-46, Rashid 2-50) by six wickets
Set 236 to win a match reduced to 41 overs per side after a wet outfield delayed the start by nearly three hours, England overhauled the target with 29 balls to spare ahead of the final fixture on Wednesday.
England's response wasn't without its hiccups, losing captain Eoin Morgan and Liam Livingstone cheaply and with Jos Buttler, the star of their world record-breaking victory in Friday's series opener, sitting out for the chase.
Roy, playing his 100th ODI after he had missed out on England's charge when he was dismissed in the second over of the first match, helped himself to 13 runs off the first over of their reply on Sunday, including three fours off Logan van Beek, and he smashed two more off Vivian Kingma in the next.
After the eight-over powerplay, the visitors were 47 without loss, compared to 33 for 1 for Netherlands, and by early in the 11th over England had already surpassed the 11 fours Netherlands scored for their entire innings.
Roy brought up the team hundred with a deft cut off Aryan Dutt through backward point for four and two balls later he crunched Dutt for six over the longest boundary at deep midwicket.
Two fours in three balls off Bas de Leede brought Salt to his fifty and he drove and swept three consecutive fours off Dutt before Roy chimed in, advancing and crashing Dutt over mid-off to the boundary. Having shared a 139-run opening stand with Salt, Roy got carried away next ball however, and gifted a catch to Shane Snater at short third man, clearly angry with himself to be gone for 73 off 60.
Salt, too, left with a sense of promise unfulfilled but that was only by the lofty measure of his century in the first match. Eyeing back-to-back tons, he followed Roy out a short time later for a still-admirable 77 off just 54 balls, beautifully bowled by Dutt as he tried to step down to the spinner.
England were 168 for 2 before Morgan made his second duck in as many innings, top-edging Tom Cooper to Snater at backward point. It extended a lean run for Morgan who has been troubled by injuries this year and managed just one international half-century in 18 months.
Livingstone, who had shrugged off the calf muscle tightness which took him from the field during Netherlands' futile chase in the first game, came in ahead of Buttler.
His quick-fire 66 in the previous match suggested England were still on track to romp to victory but his stay was brief on this occasion when he provided Tim Pringle with his maiden wicket on international debut. Left-arm spinner Pringle, the son of former New Zealand and Netherlands medium-pacer Chris Pringle, sent down a gem that enticed Livingstone forward, beat the outside edge and pinged to top of off stump.
There was still no sign of Buttler when Moeen Ali came to the crease and there were hearts in mouths when Dawid Malan, another centurion from the first fixture, was given out lbw to Dutt but he survived on review with Hawk-Eye showing the ball was headed over the stumps.
Moeen levelled the scores with six then four off Pringle and after a plucky maiden from van Beek, Moeen clubbed the winning runs with a four off Snater through square leg.
Earlier, David Willey had dismissed Vikramjit Singh cheaply for the second time in the series before Adil Rashid entered the attack in the ninth over and struck almost immediately, tempting Max O'Dowd into a slog-sweep with Malan leaping a long way to his left at square leg to pouch a sharp catch.
Brydon Carse, in the England side for Sam Curran who is managing his return from a back stress fracture, then struck with his second ball to remove Cooper, pinned lbw by a nip-backer that struck in line with middle and leg stumps and looked to be clipping the top of leg.
With just one run to his name, Edwards overturned his lbw dismissal to a Rashid delivery which was shown on review to be spinning past off stump by just enough to earn him a reprieve. He shared a 61-run stand with de Leede, whose enterprising 34 included whacking Rashid over cow corner into commentary box window.
Edwards moved to 47 by slogging Livingstone over the fence - the ball dropped short of the commentators' perch this time - and he brought up his fifty with a mow down the ground for six off Carse.
With the crowd finding their voices following a subdued start given the earlier delay to proceedings, they roared to life when Willey beat Teja Nidamanuru's attempted straight drive with one that shaped in a little to peg back his middle and off stumps, ending a 73-run stand with Edwards.
Edwards prompted more cheers as he reverse-scooped Willey over third man for six to move past his unbeaten 72 scored in the first match. He was eventually run out by an excellent direct hit by Willey running in from deep midwicket and throwing down the stumps at the striker's end as Edwards, returning for a second, dived in vain.
Pringle was out for a second-ball duck, outdone by an excellent googly from Rashid, and it fell to Snater and van Beek to bump up the Netherlands' total, Snater snatching 17 off 10 while van Beek managed 30 off 36.
Valkerie Baynes is a general editor at ESPNcricinfo