Murali Vijay hit a half century and Sri Lankan spinner Dilruwan Perera claimed his 100th Test scalp as India reached 116 for two at lunch on the opening day of the third Test in New Delhi on Saturday.
The opener was unbeaten on 51 with India skipper Virat Kohli on 17.
Vijay and Shikhar Dhawan, who returned to the team in place of Lokesh Rahul, gave India a quick start at the Feroz Shah Kotla stadium.
But the early introduction of spin put the brake on the rush, as Perera struck in his second over to send Dhawan packing for 23 after the left-handed opener top-edged a sweep to deep-midwicket.
Off-spinner Perera became the fastest Sri Lankan to 100 wickets in his 25th Test. Spin legend Muttiah Muralitharan reached the landmark in 27 matches.
Cheteshwar Pujara was the second man out, caught at leg slip for 23 after flicking a sliding delivery from paceman Lahiru Gamage. He made 23.
Vijay, who hit a century during India's thrashing of Sri Lanka in the previous Test in Nagpur, remained solid at the crease.
He reached his 16th Test fifty with a boundary off fast bowler Suranga Lakmal, and had smashed seven fours in his 67-ball stand up to lunch.
India lead the three-match series 1-0 and need only a draw for a record-equalling ninth successive Test series triumph. England and Australia are the other sides to have achieved the feat.