The tourists were comfortably placed after a 51-run stand for the opening wicket between Gautam Gambhir and Virender Sehwag before slipping to 104-3 in their first innings at lunch on the opening day. Left-handed Gambhir was unbeaten on 57 at the break for his third successive half-century and Sourav Ganguly was not out on two.
Prasad removed in-form opener Sehwag in the opening spell for his first Test victim before trapping former captains Rahul Dravid (10) and Sachin Tendulkar (six) leg-before in the second spell.
He struck in his fourth over when he had Sehwag caught behind after the batsman had contributed a run-a-ball 21 with four boundaries.
Sehwag, who smashed an unbeaten 201 and 50 in the previous Test, looked in punishing mood as he executed some handsome shots against new-ball bowlers Chaminda Vaas and Prasad.
He was dropped on 14 by Malinda Warnapura at short square-leg off Vaas, but failed to capitalise on the chance. He added only seven more runs before edging Prasad to wicket-keeper Prasanna Jayawardene.
Gambhir looked solid, waiting patiently for loose deliveries to punish. He reached his sixth half-century in 17 Tests when he fluently drove spinner Ajantha Mendis through mid-wicket for his ninth four.
Dravid and Tendulkar were adjudged leg-before under a new experimental rule allowing players to seek a second opinion on umpiring decisions.
On-field official Mark Benson of England initially ruled Dravid not out, but Sri Lanka captain Mahela Jayawardene asked the umpire to review his decision.
Benson changed his decision after consulting TV umpire Billy Doctrove of the West Indies.
The rule, on trial in the ongoing series, allows a batsman or fielding captain to request a review of any decision by referring it to the third official monitoring television replays.
Tendulkar was given out by Benson, but asked the official to review his decision. Benson was proved right after consulting the TV official.
The series is tied at 1-1, with Sri Lanka winning the opening Test by an innings and 239 runs and India clinching a 170-run victory in the second match.
India made one change from the team that played in the second Test as they brought in wicket-keeper Parthiv Patel in place of Dinesh Karthik.