Sri Lanka were 334 for five at tea when rain prevented any further play. Stand-in captain Sangakkara led his team's fight-back with 119 after England began the fifth day with hopes of sealing a 2-0 series win.
He was out 10 minutes before the interval, while Thilan Samaraweera was left stranded on 87 not out and Prasanna Jayawardene on six when a heavy downpour ended the match prematurely. The tourists fought bravely, losing just two wickets in the day while leading by 141 runs.
It was England's fifth consecutive Test series win, while Sri Lanka only missed out on a drawn series because of a remarkable batting collapse in the first Test at Cardiff when they were bowled out on the last day in 24 overs.
Sri Lanka were dismissed for 184 in their first innings at The Rose Bowl, before England replied with 377 for eight declared thanks to a fluent 119 from Ian Bell.
Sangakkara notched up his 25th Test century after previously managing a top score of just 26 in the series. He departed when driving James Anderson to substitute fielder Adam Rouse at backward point, ending an innings of more than six hours.
He required 35 minutes to score his first run after lunch and only moved from his interval score of 89 with an edge to the boundary that flew over first slip Andrew Strauss off Anderson.
Sangakkara reached three figures with a quick single to mid-on and he raised his arms in jubilation, having gone 10 years with a top score of 70 from all internationals in England.
England's only other success of the day was that of nightwatchman Rangana Herath before lunch for 36, though he survived three chances. Samaraweera added 141 for the fifth wicket with his skipper and rain possibly denied him a 13th Test hundred.
Both Samaraweera, who faced 128 balls, and Sangakkara punished the bad ball clinically. Sangakkara illustrated his intentions by smashing two fours off Anderson through cover and then straight down the ground that reduced the deficit to 45.
Herath earlier lived dangerously. First when he was on five, the left-hander pushed forward at an Anderson delivery and first slip Strauss, perhaps distracted by second slip Graeme Swann, parried the ball towards third man.
Herath survived again when he could have been run out on seven. Sangakkara scampered through for a quick single but Anderson's throw from cover point missed the stumps when Herath was well short of his ground.
England's bowlers were often too short or wide in their line and length and the Sri Lankan batsmen were able to leave the ball comfortably.
England missed a third opportunity to remove Herath, on 19, when he was struck on the pad by offspinner Swann.
Umpire Rod Tucker gave not out and England chose not to review the decision. Replays suggested Herath would have been out if they had. Swann finally dismissed Herath lbw when he missed a sweep shot.
Rain meant that 155 overs were lost during the first three days, while 369 overs were lost to the weather in total in the series.
The teams will next meet in a Twenty20 international at Bristol on Saturday, before a five-match 50-over series.
Sri Lanka 184
England 377-8 dec
Sri Lanka 2nd Innings (overnight 112-3):
T Paranavitana c Swann b Anderson 10
L Thirimanne c Strauss b Tremlett 38
K Sangakkara c sub (Rouse) b Anderson 119
M Jayawardene c Prior b Broad 6
R Herath lbw b Swann 36
T Samaraweera not out 87
P Jayawardene not out 6
Extras (b16, lb9, w1, nb6) 32
Total (5 wkts, 104 overs, 443 mins) 334
Fall of wickets: 1-25 (Paranavitana), 2-86 (Thirimanne), 3-110 (M Jayawardene), 4-185 (Herath), 5-326 (Sangakkara)
Did not bat: T Perera, D Fernando, S Lakmal, C Welegedara
Bowling: Anderson 30-9-81-2 (1w); Tremlett 21-5-66-1 (3nb); Broad 18-4-51-1 (3nb); Swann 25-6-57-1; Pietersen 7-1-30-0; Trott 3-0-24-0