The paceman finished with 5-25 off four overs as India bowled Sri Lanka out for 120 after posting 146-5. He was superbly backed by fast bowler Lakshmipathy Balaji, who took three wickets for 28 runs.
Kumar Sangakkara top-scored for Sri Lanka with 32. India were struggling at 51-4 before skipper Mahendra Singh Dhoni (55 not out) and Rohit Sharma (37) propped up the innings with a 78-run stand for the fifth wicket.
Dhoni, who led India to its 2007 World T20 triumph in South Africa, cracked three sixes and four fours in his 42-ball knock.
India are in Group A with England and Afghanistan while Sri Lanka are in Group C with South Africa and Zimbabwe. The top two teams from each group advance to the Super Eights round.
Meanwhile, Gautam Gambhir, who came in to bat with Virender Sehwag, was hit by a Lasith Malinga delivery after beginning on a positive note, hitting the slinger for a boundary off the first ball he faced. As per reports, the southpaw was hit on the wrist and was taken to a nearby hospital for a scan.
At Other warm-ups...
>> Australia: 139-6 (Shane Watson 27, David Warner 24; Doug Bracewell 2-31) beat NZ: 83 in 17 overs (Brad Hogg 3-23, Clint McKay 2-14) by 56 runs
>> Bangladesh: 135-5 in 18.2 overs (Mohd Ashraful 38, Shakib Al Hasan 28) beat Zimbabwe: 134-6 (Vusi Sibanda 40) by five wickets
>> Afghanistan bt Sri Lanka ‘A’ by 51 runs