Sri Lanka completed their first home ODI series victory since November 2015 by defeating Bangladesh by seven wickets to go 2-0 up in the three-match clash.

Avishka Fernando, who only made seven in the series opener, led Sri Lanka to a comfortable victory in Colombo on Sunday by hammering a superb 82.

Sri Lanka, in their first ODI since the retirement of star bowler Lasith Malinga, were already well on their way to reaching their target of 239 when Fernando departed.

It was left to Kusal Mendis (41) and Angelo Mathews (52) to steer them home with over five overs remaining in another mismatch.

Mushfiqur Rahim anchored the Bangladesh innings with his 98 not out enabling the Tigers to set a total of 238-8, having earlier been reduced to 88-5.

But despite becoming only the third Bangladeshi to pass 6,000 ODI runs Mushfiqur missed out on a century in farcical scenes in the closing over as Taijul Islam bizarrely ran himself out.

Mehidy Hasan hit six boundaries to make 43 alongside Mushfiqur in a vital stand of 84 but Bangladesh's score, after they won the toss and opted to bat, never looked likely to be enough.

Isuru Udana, who replaced Malinga in the hosts' XI, took two wickets but it was the recalled Akila Dananjaya who starred with excellent figures of 2-39.

Mehidy removed Sri Lanka captain Dimuth Karunaratne with a beauty for 15 but the 21-year-old Fernando further burnished his growing reputation with another outstanding innings.

Fernando failed to convert for his second ODI century, falling to Mustafizur Rahman (2-50), but his barrage of nine fours and two sixes had Bangladesh on the ropes.

After Kusal Perera made 30, Mendis and Mathews completed the run chase with ease, the latter reaching his half-century by hitting a boundary for the winning runs.

Sri Lanka won the first ODI of the series by 91 runs and will aim to complete a whitewash in Colombo on Wednesday, with Bangladesh hoping to arrest a run of four straight defeats.