Paceman Navdeep Saini claimed three wickets to help dismiss Sri Lanka for 123 in 15.5 overs despite a fighting 57 by Dhananjaya de Silva.
Saini sent back De Silva after his 36-ball knock and then got skipper Lasith Malinga for nought as the islanders lost their second straight match after the opening T20 was abandoned due to rain.
Manish Pandey and Shardul Thakur also played key roles with batting cameos that helped India take 63 runs from the last five overs.
Pandey, scoring 31 off 18 balls, and Thakur, with an eight-ball 22, put on an unbeaten 37-run stand for the seventh wicket and the duo managed to get 19 runs off the last over.
Earlier the left-handed Dhawan was dropped on one by Dasun Shanaka at deep square leg off Angelo Mathews and made the most of the spill as he recorded his 10th T20 fifty in just 34 balls.