Skipper Dimuth Karunaratne battled through back pain to extend Sri Lanka's second-innings lead to 323 after key strikes by Pakistan's bowlers in the second Test on Tuesday.
The hosts reached 176-5 when bad light stopped play early on day three, with stumps called in Galle after more than half an hour's wait for conditions to improve.
Spinner Ramesh Mendis had claimed a five-wicket haul to help bowl out tourists Pakistan for 231 in the opening session, with the hosts at a lead of 147 going into their second innings.
Sri Lanka were in trouble at 117-5 when Karunaratne, who stayed off the field during Pakistan's innings, and De Silva got down to the grind.
De Silva took on the opposition bowlers and hit six boundaries with Karunaratne happy to play anchor. The skipper got help from the physio in between his knock.
Karunaratne rotated the strike and also hit two boundaries including a reverse sweep for four off leg-spinner Yasir Shah.
Pakistan earlier rattled the Sri Lankan batting with key wickets including Angelo Mathews in his 100th Test after the former captain, who made 35, attempted to rebuild the innings with Dinesh Chandimal.
The in-form Chandimal, with scores of 206 not out, 76, 94 not out and 80 in his last four innings, looked good on 21 but fell caught behind off fast bowler Naseem Shah soon after tea.
Naseem, who took three wickets in Sri Lanka's first innings, had struck first with the wicket of Niroshan Dickwella, who fell for 15 after opening in place of the ailing Karunaratne.
Yasir sent back Oshada Fernando for 19 and fellow spinner Mohammad Nawaz trapped Kusal Mendis lbw for 15.
Pakistan's innings ended after the tourists resumed the day on 191-7, in reply to Sri Lanka's first innings of 378.
Off-spinner Ramesh sent back Nauman Ali and then trapped overnight batsman Yasir lbw for 26 to record a third five-wicket haul in his 10th Test to wrap up the innings.
Pakistan lead the two-match series 1-0 and Sri Lanka are looking to draw level on a pitch which has favoured the batsmen but is expected to turn come day four.
The tourists chased down a record 342 at the same venue in the opener.