The hosts overcame a mid-innings collapse to chase 136 with four balls remaining courtesy of late cameos from MS Dhoni and Dinesh Karthik.
India skipper Rohit Sharma won the toss and saw his bowlers justify his decision by restricting the tourists to 135 for seven.
Jayden Unadkat and Hardik Pandya both took two wickets while debutant spinner Washington Sundar, the youngest player to represent India in a T20 at the age of 18 years and 80 days, returned impressive figures of one for 22 from four overs.
Sri Lanka were soon in trouble at 18 for three and needed 36 from Asela Gunaratne and Dasun Shanaka’s unbeaten 24-ball 29 to post a total that could challenge India.
India lost openers Lokesh Rahul and Rohit inside seven overs and were then reduced to 108 for five before Dhoni and Karthik came to the rescue, taking 20 off the last three overs. (Courtesy Press Association)