Sri Lanka was cruising comfortably at 175 for two on the second day before Indian leg-spinner Kumble struck late in the afternoon with the old ball to capture his four wickets for just 18 runs.
The visitors slumped to 198 for six as skipper Marvan Atapattu was caught by Gautam Gambhir off Kumble on the last ball of the day for 88 runs, including 11 boundaries.
Sri Lanka were 92 runs behind India's first innings score of 290 with four wicket in hand.
Atapattu and Mahela Jayawardene were involved in a third-wicket partnership of 113 runs. Jayawardene batted fluently until he was trapped lbw by Kumble for 60 runs.
Earlier, India's jubilation after Sachin Tendulkar scored his 35th hundred Saturday to claim the test century-maker's record, turned to despair as Muralitharan ran through the Indian first innings in the first session to leave the home side all out for 290.
Resuming at a formidable overnight score of 245 for three, India lost seven wickets for just 45 runs as Muralitharan spun his side back into the game. It was Muralitharan's 48th five-wicket haul in test cricket.
Atapattu hit an unbeaten half century, while opener Avishka Gunawardena fell for 25 and Kumar Sangakkara was dismissed for three.
Indian pace bowler Irfan Pathan captured both the wickets.
The Indian batsmen found it difficult to read Muralitharan, who dictated terms and dismissed both former captain Sourav Ganguly and Tendulkar to trigger the Indian slide in the morning.
Tendulkar, who tried to paddle sweep a delivery from Muralitharan, missed and was trapped lbw. He added only nine runs to his overnight score of 100, that included 14 boundaries and one six.
Ganguly was the first to be dismissed on Sunday. He also was trapped lbw by Muralitharan for 40 runs, including four boundaries.
Yuvraj Singh (0), Mahendra Dhoni (5) and Irfan Pathan (0) all got out cheaply.
Sri Lankan leg-spinner Malinga Bandara claimed two wickets for 54 runs.Reuse content