Chasing a modest 250 for a win, Jayawardene and Tharanga tore apart the Bangladesh bowlers to canter to the target with 7.1 overs to spare at the Sher-e-Bangla National Stadium.
Earlier, Bangladesh put up a shoddy batting display coming up with a modest score of 249 for nine with captain Shakib Al Hasan top-scoring with 47 after being put into bat in front of 10,000-odd spectators.
Sri Lanka's win not only booked them a berth in the January 13 final they have also almost shut the final match door on the hosts.
If Bangladesh, who have a negative net run rate (-0.626) after losing all three games, are to qualify for the final, they will have to beat India by a huge margin and pray that Mahendra Singh Dhoni's men lose heavily against the islanders on Sunday.
Jayawardene, who hit his 12th ODI hundred, was dismissed in the 38th over when the match was all over in his side's favour at 215 for one. He smashed 13 fours in his 117-ball innings.
Tharanga, who hit his eighth ODI hundred in his 90th match, struck 18 fours in his 126-ball innings. The left-handed batsman reserved his special treatment for Syed Rasel hitting the pacer for six fours including three from the 23rd over while Jayawardene picked right-arm paceman Rubel Hossain for seven fours.
Captain Kumar Sangakkara remained not out on a 14-ball 17 as Tharanga fittingly hit the winning runs off Tamim Iqbal for Sri Lanka to reach 252 for one in 42.5 overs.
Jayawardene and Tharanga were engaged in a sort of competition in outscoring each other and the hapless host bowlers could not do much as Sri Lankan opening duo stitched togerger 215 runs in 37.4 overs.
As many as seven bowlers, including four slower ones, were pressed against them but none could make an impact on the Sri Lankan openers who drove, cut, pulled and picked the gaps for ones and twos without giving much chance to their opponents on a batting pitch.
The Bangladeshi bowlers also erred in line and length against the left-right combination and their woes were compounded by the dew, which did not allow the bowlers grip the ball.
Naeem Islam got the lone wicket of Jayawardene but conceded 35 from his five overs while Rubel Hossain was the most expensive by leaking 59 runs from his eight overs.