Sri Lanka wasted another brilliant start to their innings as they collapsed to 215 in 44.5 overs.
India need 216 runs to win and win the series 2-1. India have a brilliant home record as they have not lost a series here since the defeat to South Africa in October 2015.
Earlier, India won the toss and put Sri Lanka to bat first. Pacer Jasprit Bumrah got the first wicket for India, as he dismissed Danushka Gunathilaka for 13.
Upul Tharanga and Sadeera Samarawickrama then shared a handy 121-run partnership to keep the Indian bowlers quiet. Tharanga, was particularly harsh on seam bowler Hardik Pandya, who went for 20 runs in his two overs.
Both Tharanga and Samarawickrama played some glorious shots to keep the scoreboard ticking. At one stage, Sri Lanka were 135 for 1 after 22 overs and were looking at a score of 300-320.
Also Read
However, India's spin twins, Yuzvendra Chahal (3 for 46)and Kuldeep Yadav (3 for 42) pulled things back very quickly. Both of them took three wickets each.
Once, Chahal got Samarawickrama for 42, it was just a matter of time. Tharanga looked set get his 16th ODI century, before he failed to read Kuldeep's googly, only to be stumped for a well made 95.
Tharanga's wicket turned out to be the turning point afterwards. Angelo Mathews, who scored a unbeaten 111 in Mohali on Wednesday, failed to replicate his form today and was done in by a ripper by Chahal.
Niroshan Dickwella and captain Thisara Perera were dismissed cheaply.
The spinners and Pandya then quickly mopped up the tail as Sri Lanka lost their way after Tharanga's dismissal.
India are currently levelled at 1-1 with Sri Lanka after the hosts won the second ODI in Mohali by 144 runs.
Sri Lanka have never won a bilateral series in India, having lost eight and drawn one.
Stand-in skipper Rohit Sharma thrashed the visitors with his unbeaten 208.
The hosts conceived a seven-wicket defeat to Sri Lanka in the first ODI in Dharamshala.
Disclaimer: No Business Standard Journalist was involved in creation of this content