Dilshan passed the 9,000-run mark in one-day cricket on his way to a stroke-filled 101 to lead the hosts to a commanding 302-6 after they elected to bat in the day-night match in Colombo.
England were bowled out for 215 in 45.5 overs in reply after Dilshan's off-spin broke the tourists' back with the key wickets of Moeen Ali (0), Alex Hales (seven) and Eoin Morgan (four).
Joe Root top-scored with 80 but skipper Alastair Cook (32) and Chris Woakes (34) were the only other batsmen to cross 30 in a disappointing batting display by the tourists on the slow pitch.
The veteran pair of Kumar Sangakkara and Mahela Jayawardene could not have asked for a better parting gift in their last one-day international on home soil.
Also Read
The duo whetted the appetite of some 20,000 Sri Lankan fans at the Premadasa stadium with some glorious strokeplay, but fell just when they looked set for a big score.
Jayawardene had hit 28 off 22 balls when he pulled a short ball from Harry Gurney to the long-leg fielder. Sangakkara offered a tame catch to mid-wicket off Ali after making 33.