After fifties from KL Rahul (57) and Suryakumar Yadav (50) helped India post a challenging 186/7 in their 20 overs as fast bowler Kane Richardson picked 4/30, Australia needed 16 runs off the last two overs to successfully chase down the total.
But Harshal Patel conceded only five runs in a superb 19th over and picked up the wicket of captain Aaron Finch, who top-scored with a 54-ball 76, apart from a brilliant run-out of Tim David by Virat Kohli’s direct hit.
Shami was then a surprise pick to bowl the final over after having not bowled in the entire match and made his mark by having Pat Cummins caught at long-on, thanks to a phenomenal one-handed catch by Kohli at long-on.
Shami then nailed his last two yorkers right and knocked over Josh Inglis and Kane Richardson to seal a narrow win for India in a final over where four wickets fell, including that of Ashton Agar.
The chase of 187 for Australia started well as Mitchell Marsh got some batting practice with an 18-ball 35, before falling in the final over of power-play, while Finch got going from the other end too. India started with five bowlers in five overs but were hammered for runs by Marsh and Finch.
After Marsh fell to Bhuvneshwar Kumar, Steve Smith was next to fall, cleaned up by leg-spinner Yuzvendra Chahal. Glenn Maxwell smacked Chahal for four fours in his 16-ball 23, but nicked behind off Bhuvneshwar just as it felt he would last long at the crease.
Though Marcus Stoinis fell cheaply to Arshdeep Singh, Finch and David had kept Australia in the match till they lost their last six wickets for nine runs in the last two overs, something which will boost India’s confidence in death over bowling ahead of the main tournament.
Earlier, pushed into batting first, Rahul was the aggressor right from the word go when he got a brace of fours in the first two overs of Richardson and Mitchell Starc, pulling, flicking and swivelling with ease in the rest of his stay at the crease.
He then smacked Cummins for a six and a four inside three balls of his first over, and went on to collect three fours and a six off Stoinis, who conceded 20 in his first over of the day. Rahul reached his fifty with a wristy flick over mid-wicket fence off Maxwell in the final over of power-play.
Rohit Sharma also got a four and a six off Maxwell, but Australia made a comeback as the Indian skipper and Rahul holed out to deep mid-wicket in successive overs. Kohli was delightful in his 13-ball 19 before top-edging a pull to fine leg off Starc. Hardik Pandya couldn’t do much, steering a Richardson slower bouncer to short third man.
Suryakumar got going with his trademark inside-out loft over long-off and sliced through backward point fetching him fours off Agar. He continued to be in his elements, like premeditating a sweep and pulling anything which was short or picking anything quickly which was in his slot.
After reaching his fifty with a loft over extra cover, Suryakumar lobbed the ball straight back to Richardson. Dinesh Karthik supported him well with a cameo of 20 off 14 balls while Ravichandran Ashwin got off the mark with a huge six before falling on the final ball of the innings.
Brief scores: India 186/7 in 20 overs (KL Rahul 57, Suryakumar Yadav 50; Kane Richardson 4/30) beat Australia 180 all out in 20 overs (Aaron Finch 76, Mitchell Marsh 35; Mohammed Shami 3/4, Bhuvneshwar Kumar 2/20) by six runs.