Overnight centurion de Silva maintained his prolific scoring rate to be unbeaten on 170 as Sri Lanka reached 295 for 1 by lunch on the third day, trailing Bangladesh by 218 runs in the first innings. Having resumed the day shy of the Bangladesh first innings total by nine runs, they declared at 713 for 9.
De Silva reached his 1,000 runs in Tests on 154, joining Roy Dias as the quickest Sri Lankan to achieve the feat in his 23rd innings.
Dhananjaya struck 21 fours and a six in his marathon knock, while Kusal was increasingly positive after a scratchy start to his innings, runs flowing through the leg side as he milked the spinners.
Scores in the match going into Saturday's fourth day are: Bangladesh 513; Sri Lanka 504-3.
Roshen Silva was unbeaten on 87 alongside skipper Dinesh Chandimal, 37 not out, when stumps were drawn at the Zahur Ahmed Chowdhury Stadium.
Spare a thought for the left-arm spinner Taiujul Islam, who alone sent down 67.3 overs, picking up figures of 4/219 for his toil.
A boundary off Mehedi brought up Dickwella's half-century from just 47 balls but his fun was ended when he edged the same bowler behind and Dilruwan Perera (32) was trapped in front to become Sunzamul Islam's first Test victim, in his 42nd over.
The Bangladesh attack continued to toil without reward, Dhananjaya showing his repertoire of strokes as he coasted past 150 but finally fell after top-edging Mustafizur Rahman and wicketkeeper Liton Das took the catch. The duo shared 135 run stand for the fourth wicket before Mehedi Hasan (3-174) had Roshen caught behind.