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.
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.
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. (ANI)