India appeared to be heading for victory when they claimed three wickets in the morning session to leave Sri Lanka tottering at 106 for 5, still needing 40 to make India bat again.
However, the sixth-wicket pair of De Silva and Kumara Dharmasena came to Sri Lanka's rescue with a defiant stand of 103, batting through the afternoon session until well past tea.
Dharmasena was bowled by the pace bowler Javagal Srinath for 25, with Sri Lanka only 63 ahead and a minimum of 25 overs still to be bowled, but De Silva ensured their were no further alarms for the visitors.
De Silva was on 98 when bad light stopped play for 38 minutes, but he was not denied a 15th Test century as Sri Lanka closed the match at 251 for six.
Sachin Tendulkar, the India captain, conceded that De Silva made the difference between victory and a draw. "He was very good. The first two hours went our way, but then Aravinda came and snatched the game away from us," he said.
India won toss
SRI LANKA - First Innings 369 (M S Atapattu 108, S T Jayasuriya 53; A Kuruvilla 4-88, J Srinath 4-92).
INDIA - First Innings 515 for 9 dec (N S Sidhu 131, S C Ganguly 109, N R Mongia 57, M Azharuddin 53).
SRI LANKA - Second Innings
M S Atapattu c Chauhan b Kuruvilla 31
P A de Silva not out 110
*A Ranatunga c Dravid b Kuruvilla 3
H P Tillakaratne c Tendulkar b Chauhan 9
H D P K Dharmasena b Srinath 25
S K L de Silva not out 11
Extras (b13 lb9 nb12) 34
Total (for 6) 251
Fall: 1-22 2-40 3-57 4-82 5-106 6-209.
Did not bat: W P U J C Vaas, M Muralitharan, K S C de Silva.
Bowling: Srinath 22-3-75-3 (3nb); Mohanty 16-4-32-0; Kuruvilla 15.1-4- 29-2 (4nb); Kumble 19-5-66-0 (5nb); Chauhan 18-11-23-1; Ganguly 2-2-0- 0; Azharuddin 1-0-4-0.
Umpires: S Venkataraghavan (Ind) and S A Bucknor (WI).Reuse content