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 cracked three sixes and four boundaries 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.
In another practice match in Colombo, Brad Hogg took three wickets to bowl Australia to a 56-run win over rivals New Zealand.
The 41-year-old spinner finished with 3-23 off four overs as Australia dismissed New Zealand for 83 after scoring 139-6.
Pacemen Shane Watson, Clint McKay and Pat Cummins each bagged two wickets for Australia.
Australia are in Group B with the West Indies and Ireland, while New Zealand are in Group D with Pakistan and Bangladesh.
Bangladesh defeated Zimbabwe by five wickets and Afghanistan beat Sri Lanka A by 51 runs in other warm-up games.
The World Twenty20 starts on Tuesday.
COMMENTS (3)
Comments are moderated and generally will be posted if they are on-topic and not abusive.
For more information, please see our Comments FAQ
Focus is on Indo-Pak practice match as rest are of no consequence.
Inshalla!!! India will win the T20 world cup
Malinga always gets hit by Indians in a big way. This time around Malinga conceded 50 runs in 4 overs at an average of 12.50 runs per over. If Sri Lanka wants to win against India, they must not include Malinga in their playing 11.