Kumar Sangakkara starred with the bat as Sri Lanka won the second one-day international against Bangladesh by 61 runs in Dhaka to take an unassailable 2-0 series lead.
Sangakkara (128) scored his 17th ODI century and shared in a crucial 114-run stand with Ashan Priyanjan (60) that helped Sri Lanka recover from 63 for three to reach 289 for six off their 50 overs.
And that proved to be well beyond Bangladesh, who despite a fine knock of 79 from captain Mushfiqur Rahim, were bowled out for 228.
Lasith Malinga, Sachithra Senanayake, Thisara Perera and Ajantha Mendis picked up two wickets apiece for Sri Lanka as they wrapped up the win with seven overs to go.
After winning the toss and opting to bat first at the Shere Bangla National Stadium, Sri Lanka found themselves in some difficulty as Kusal Perera, Tillakaratne Dilshan and Dinesh Chandimal all failed to reach double figures.
However, Sangakkara and Priyanjan helped the tourists recover before captain Angelo Mathews added some late momentum with an unbeaten 56 off 39 balls, including the only six of the Sri Lanka innings.
Priyanjan scored his runs off 97 balls as he collected his second half-century in his fourth ODI appearance, while Sangakkara had struck 14 fours before his superb knock was brought to an end when he was snared by Arafat Sunny in the 47th over.
That was a little too late for Bangladesh though, with Sangakkara's 83-run partnership off just 9.4 overs with Mathews ultimately pushing the game out of their reach.
The hosts then suffered a miserable start to their reply when they lost Shamsur Rahman to Malinga in the opening over, but his fellow opener Anamul Haque (42) helped them recover to 57 for one.
However, aside from Anamul and then Mushfiqur, no Bangladesh batsman could hang around long enough to cause Sri Lanka any serious problems with their third top-scorer being Shakib Al Hasan with 24.
Sri Lanka will now attempt to wrap up a 3-0 series whitewash when they play the third match in Dhaka on Saturday.