India lost makeshift opener Irfan Pathan (five) and Suresh Raina (one) before reaching 17-2 in reply at the break.
Virat Kohli was unbeaten on seven and Yuvraj Singh on one not out.
Zaheer Khan earlier grabbed four wickets in a sensational opening spell to help India restrict the hosts.
Sri Lanka were in danger of falling to their lowest-ever total of 96 against India when they were reduced to 44-6, but lower-order batsmen Thilan Thushara and Nuwan Kulasekara rallied their side with a defiant 74-run stand.
Left-handed Thushara (44) looked like reaching his half-century before swinging seamer Praveen Kumar to Virat Kohli at deep mid-wicket.
He hit seven fours in his career-best knock.
Kulasekara, dropped on 13 by Rohit Sharma in the slips off spinner Harbhajan Singh, played a supporting role with 25 to emerge the second-highest scorer.
Left-arm seamer Zaheer (4-21) sliced through the top order, claiming four of the first five wickets, including two in one over.
Kuma