Sri Lanka's bowlers bundled out England for 185 before the hosts chased down the target with eight wickets to spare in the rain-hit second ODI to take a 2-0 lead in the seven-match series.
England won the toss and opted to bat in a match shortened to 45 overs due to showers, but they were reduced to 37 for three inside the first 10 overs with part-time off-spinner Tillakaratne Dilshan removing the openers.
Moeen Ali, the centurion in the first ODI which England lost by 25 runs at the same venue, was out for two in the second over and captain Alastair Cook made 22.
It was left to Ravi Bopara (51) to add respectability to the total with his second successive fifty but he fell to off-spinner Ajantha Mendis (3-33) as England were all out in 43 overs.
Joe Root made the only other notable contribution with the bat for England with 42.
Sri Lanka also lost both openers early but unbeaten half-centuries from the experienced Mahela Jayawardene (77) and Kumar Sangakkara (67) and an unbroken third-wicket stand of 149 took them to their target with more than 10 overs to spare.
The third match of the series will be played on Wednesday in Hambantota.
England 185 all out in 43 overs (Bopara 51, Mendis 3-31)
Sri Lanka 186-2 in 34.2 overs (Jayawardene 77*, Finn 1-35)