India had a poor start to their innings by losing Rohit Sharma to Kasun Rajitha for a duck in the second ball of the day in Pune.
The hosts struggled to find momentum as Ravichandran Ashwin top scored with 31 runs off 24 balls.
They finished on 101 all out inside the 19th over and in reply, Sri Lanka lost early wickets in Niroshan Dickwella (4) and Danushka Gunathilaka (9).
Dinesh Chandimal ended his innings with the highest score of 35 runs off as many deliveries, but it was Milinda Siriwardana and Seekugge Prasanna who got Sri Lanka over the line with 21 and three runs respectively.
By Taiwo Oyedeji
Twitter » Teeboy_88