Jayasuriya missed out on what would have been his 20th One-day international century as other batsmen failed to apply themselves on a slow pitch after being put in to bat on Wednesday.
Sri Lanka were bowled out on the last ball of their alloted 49 overs after a delayed start due to fog forced the match to be reduced by one over per side.
New-ball bowler Syed Rasel struck the first two blows for Bangladesh before spinners Alok Kapali and Mohammad Rafique tore through the middle-order with a couple of scalps each.
Left-armer Rasel, who bowled his 10 overs on the trot, had left-hander Jehan Mubarak (two) caught behind by Khaled Mashud in his second over.
Rasel then broke a crucial second wicket partnership when he had Kumar Sangakkara (23) caught down the leg side by Mashud in his last over to finish with 2-28.
Sri Lanka lost their way from a comfortable 72-1 in the 20th over after Sangakkara was associated in a 67-run stand with Jayasuriya.
Jayasuriya made a slow start scoring just eight runs off the first 26 deliveries faced by him but reached his 50 off 61 deliveries.
He slammed eight fours and a six off left-armer Rafique during his 110-ball knock before falling lbw to the same bowler while trying to play a pull shot.
Farveez Maharoof (21), Malinga Bandara (18) and Dilhara Fernando (13) chipped in with useful knocks down the order to push the score past the 200-run mark.
Sri Lanka lead the three-match series 1-0 after having won the first match here on Monday by five wickets.