Set to score 245 for victory, Sri Lanka were cruising at 106 for three, when the complexion of the match changed as the batsmen from the emerald Islands got out to a series of poor shots and were involved in terrible mix-ups resulting in three inexplicable run outs to fold up for 196 in 44.5 overs.
Earlier, put into bat by Lankan skipper Russel Arnold, Pakistan reached 244 in 48.3 overs in difficult conditions at the Eden Gardens, thanks to useful knocks from Faisal Iqbal (57) and Man of the Match Naveed Latif (50).
All eyes will now be focused on Sunday's last league match between India and Pakistan that is a must-win for the latter for a place in the December 30 title clash.
While India are already through to the final, Pakistan moved to seven points, including a bonus from Saturday's game. Sri Lanka have wrapped up their group league engagements on 10 points.
Badani's knock helps India 'A' reach finals