Spinners Kuldeep Yadav and Yuzvendra Chahal shared three wickets each for India as Sri Lanka squandered a blistering start provided by Tharanga (95 off 82).
The wicket offered decent turn for the spinners but the visitors failed to apply themselves, losing the last five wickets in the space of 18 runs and the last eight for 55 runs.
Put in to bat by India captain Rohit Sharma, Sri Lanka were cruising with Tharanga and Sadeera Samarawickrama (42) sharing a 121-run stand for the second wicket after Danushka Gunathilaka (13) fell in the fourth over.
Tharanga played fluent drives and flicks as he forged a fruitful stand with Samarawickrama, who came up with some enterprising strokes of his own.
Also Read
In the sixth over, an edge by Samarawickrama fell short of the Shikhar Dhawan at slips off Bumrahs bowling.
Hardik Pandya came in as the first change bowler in the seventh over, replacing Bhuvneshwar Kumar.
He was taken for 20 runs in his second over by Tharanga, who looked increasingly confident but got lucky on a few occasions.
The introduction of Chahal in the 17th over did not alter the fortunes much though as the two batsmen mixed caution with aggression to counter him.
Tharanga, in particular, went on the attack against the Haryana leg-spinner and smashed three big sixes.
Samarawickrama was dropped on 29 by Dinesh Karthik at mid-wicket, when attempting a flick against Kuldeep. It was a tough chance.
Pandya was re-introduced into the attack in the 22nd over after a first spell of 3-0-23-0 and Samarawickrama played a fluent punch off the second ball for a boundary.
The seasoned Angelo Matthews, who walked in following his exit, put on 24 overs with Tharanga, before the left-hander was stumped by MS Dhoni off Kuldeeps bowling for 95.
The opener, who missed out on a well-deserved ton, completed 1,000 runs for the calendar year during the course of the knock. Thereafter, it all went downhill for Sri Lanka.
A lot depended on Matthews after the dismissal of Tharanga, who till the start of the series was Sri Lankas ODI captain.
Captain Thisara Perera didnt last long either, falling lbw to Chahal for six. He was caught on the crease, trying to cut the leg-spinners stock delivery. He reviewed the decision with the third umpire Paul Reiffel upholding the on-field umpires call.
In the 37th over, Asela Gunaratne survived a run-out chance as the bowler Bhuvneshwar Kumar fumbled a throw from Karthik after a diving attempt to stop Pathiranas shot.
Disclaimer: No Business Standard Journalist was involved in creation of this content