The 34-year-old Vandersay, a late replacement for injured spinner Wanindu Hasaranga who was ruled out of the series ahead of the match, took the first six wickets to fall in India’s chase of 241 for victory at Colombo’s R. Premadasa Stadium.
Sri Lanka skipper Charith Asalanka took three wickets to bowl out India for 208 and take a 1-0 lead in the three-match series after the opener ended in a tie.
India skipper Rohit Sharma hit 64 and handed the team a strong start in his 97-run opening stand with Shubman Gill, who made 35 before Vandersay wreaked havoc.
Rohit hit his second successive half-century but fell while attempting a reverse sweep.
Kamindu Mendis took a stunning catch at slip to help send back Gill off Vandersay.
Jeffrey Vandersay kept getting wickets including Virat Kohli trapped lbw for 14 and bowled KL Rahul for a duck as India slipped to 147-6.
Axar Patel attempted to put the chase back on track with his 44 and a 38-run partnership with Washington Sundar, who made 15, but Asalanka broke through.
Asalanka got the left-handed Patel
Asalanka got the left-handed Patel caught and bowled and kept up the bowling charge to bowl out the opposition in 42.2 overs after a final run out.
Dunith Wellalage, who made 39, and fellow left-hander Kamindu, who hit 40, set up victory with their 72-run seventh-wicket stand after Sri Lanka slipped to 136-6.
Kamindu and Wellalage hit back to get Sri Lanka past 200 before Kuldeep broke through to get the left-handed Wellalage.
Kamindu kept up the charge in the final few overs to add more muscle to the total along with Akila Dananjaya, who hit 15.
He was run out on the penultimate ball of the innings by a direct hit from Shreyas Iyer, who was fielding at mid-wicket, while Kohli ran out Dananjaya.
The hosts suffered an early blow when Hasaranga was ruled out of the remaining two matches after he injured his hamstring in the opener.
Asalanka won the toss and elected to bat but the Indian bowlers took regular wickets, with Mohammed Siraj getting Nissanka caught behind on the first ball of the match.
Avishka Fernando made 40 and put on 74 for the second wicket with Kusal Mendis, who made 30.
However, Sundar broke through to get Fernando caught and bowled and soon also sent back Kusal. Sundar dismissed Asalanka for 25 and returned figures of 3-30.