Only 15 overs of play were possible in the entire day as the umpires made multiple inspections to check for a restart but called stumps about an hour after the official tea break.
Sri Lanka captain Angelo Mathews was rewarded by his fast bowlers with the wickets of opener Lokesh Rahul (two) and in-form batsman Ajinkya Rahane (eight) after he opted to bowl on a pitch sporting a covering of grass.
India captain Virat Kohli (14) survived some nervy moments to stay unbeaten with Cheteshwar Pujara (19) when heavy rain forced the players off the ground for an early lunch break.
Rahul was clean bowled by Dhammika Prasad with the second delivery of the day with the batsman inexplicably shouldering arms to a ball that nipped back from outside the off stump.
Rahane, who scored a century in India’s second test victory last week, batted confidently before he missed a straight delivery from Nuwan Pradeep to be given out leg before wicket.
India were 14-2 at that stage and looked set for more trouble but debutant wicketkeeper Kusal Perera spilled an edge from Kohli with the batsman on eight.
Kohli was once again lucky when he edged Prasad but the ball fell short of the first slip.
The hosts made three changes to the side that lost the second test with lower order batsman Jehan Mubarak and paceman Dushmantha Chameera being dropped while Kumar Sangakkara retired from international cricket.
Hard-hitting batsman Perera, left-handed batsman Upul Tharanga and paceman Nuwan Pradeep were drafted in for the deciding test of the series tied at 1-1.
India also handed a test debut to a wicketkeeper-batsman with Naman Ojha replacing Wriddhiman Saha, who was been ruled out with a hamstring injury suffered in the second match.
Pujara, whose last match was the Boxing Day test against Australia last December, replaced injured opener Murali Vijay in the only other change in the visiting team.