England's win left the five-match series all square at 2-2 ahead of Saturday's Old Trafford finale.
England, chasing a revised target of 171 after rain reduced their innings by two overs, finished on 171 without loss with more than 24 overs to spare. Craig Kieswetter was 72 not out.
Left-hander Cook's innings followed his career-best 119 in a six-wicket defeat at Lord's on Sunday.
Man-of-the-match Cook, not even in England's squad at the World Cup this year on account of his supposedly slow one-day scoring rate, faced just 75 balls with 16 fours.
Kieswetter, who struck three sixes and eight fours in 68 balls, helped Cook set a new England record partnership against Sri Lanka, surpassing the fourth-wicket stand of 154 shared by Graeme Hick and Neil Fairbrother at Adelaide in 1998.
England's victory — only their fourth 10-wicket one-day international win — was all but assured after they dismissed Sri Lanka for just 174.
James Anderson took three wickets for 24 runs in eight overs before fellow seamer Jade Dernbach wrapped up the innings with three wickets in 10 balls.
Sri Lanka's Kumar Sangakkara made a gritty 75 before he was last out but none of his team-mates made more than Angelo Mathews's 39.
England off-spinner Graeme Swann had issued a plea in the build-up to this match for a pitch that would give his side a 'home advantage'.
"When we go to Sri Lanka they don't play on green seamers," Swann, who plays at Trent Bridge for Nottinghamshire, said.
But that is just what confronted the teams on Wednesday after Cook won the toss and fielded.
And the first over saw Sri Lanka captain Tillakaratne Dilshan caught behind off a good length Anderson delivery for nought.
Mahela Jayawardene had made a career-best 144 and 79 in the World Cup finalists' 69-run and six-wicket wins at Headingley and Lord's respectively.
But on Wednesday he managed just nine before he edged an away-swinger from Tim Bresnan to first slip Jonathan Trott.
Dinesah Chandimal then went from the heights of 105 not out at Lord's to the low of a duck when lbw to an Anderson inswinger.
First change Stuart Broad, previously wicketless in the series, had a break when he had Suraj Randiv, promoted up the order, caught down the legside by wicketkeeper Kieswetter for 18.
All-rounder Mathews hit back by driving Dernbach and Broad for sixes.
But his enterprising innings finished when he was caught and bowled by Bresnan, diving forward in his follow-through.
Sangakkara, though, guided Bresnan to the third man boundary — the left-hander's fifth four — to complete a grafting 80-ball fifty. But he eventually miscued Dernbach to point.
M Jayawardene c Trott b Bresnan 9
T Dilshan c Kieswetter b Anderson 0
D Chandimal lbw b Anderson 0
K Sangakkara c Morgan b Dernbach 75
T Kandamby c Swann b Anderson 6
S Randiv c Kieswetter b Broad 18
A Mathews c and b Bresnan 39
J Mendis c Kieswetter b Broad 11
N Kulasekara lbw b Dernbach 5
L Malinga b Dernbach 0
S Lakmal not out 1
Extras (lb5, w5) 10
Total (all out, 43.4 overs) 174
Fall of wickets: 1-1 (Dilshan), 2-10 (Jayawardene), 3-11 (Chandimal), 4-20 (Kandamby), 5-57 (Randiv), 6-129 (Mathews), 7-155 (Mendis), 8-163 (Kulasekara), 9-163 (Malinga), 10-174 (Sangakkara)
Bowling: Anderson 8-1-24-3 (1w); Bresnan 9-0-39-2 (2w); Broad 8-0-37-2; Dernbach 84-1-38-3 (2w); Swann 10-2-31-0
A Cook not out 95
C Kieswetter not out 72
Extras (w4) 4
Total (for no loss, 23.5 overs) 171
Did not bat: J Trott, K Pietersen, E Morgan, I Bell, T Bresnan, G Swann, S Broad, J Anderson, J Dernbach
Bowling: Kulasekara 35-0-36-0; Malinga 5-0-28-0 (3w); Lakmal 2-0-12-0; Mathews 3-0-22-0; Randiv 5-0-32-0; Dilshan 3-0-21-0 (1w); Mendis 2-0-20-0;
Result: England won by 10 wickets (D/L method)
Man-of-the-match: Alastair Cook
Series: Five-match series level at 2-2