Australia made a formidable 197 for five but India replied with 200 for three against an inexperienced attack.
They needed 17 to win off the last over and Suresh Raina hit a boundary off the final ball for victory.
Stand-in Australian skipper Shane Watson, who had scored an unbeaten century and also claimed the vital wicket of Shikhar Dhawan, appeared to have won his side the match when he conceded just five runs from the 19th over.
But rookie bowler Andrew Tye (0-51) could not handle the pressure in the 20th. The first two balls went for a four and six from Yuvraj Singh (15 not out), paving the way for Raina’s last-ball heroics.
Raina should have been stumped by debutant Cameron Bancroft off the first ball he faced from young spinner Cameron Boyce (2-28), and made the most of his good fortune to score 49 off 25 balls.
Rohit Sharma and Virat Kohli again led the Indian batting, both posting half-centuries.
For much of the chase India looked to have the target under control after taking full advantage of some wayward bowling by paceman Shaun Tait (0-46). But Sharma (52) and Kohli (50) both fell to Boyce as the match tightened up.
Kohli, named man of the series, was thrilled to have completed a clean sweep of the T20s after India lost the one-day international series.
“We wanted to finish off well and get a clean sweep and we’ve done it,” he said.
The much-maligned Watson led from the front for Australia in a masterful solo performance.
He probably played himself into Australia’s squad for the upcoming Twenty20 World Cup with his unbeaten 124 from 71 balls, the second-highest score in the format at international level.
The 34-year-old was promoted to the captaincy due to the injury-enforced absence of Aaron Finch and opened the batting.
Dropped on 56 by Kohli, he hit six sixes and posted the biggest T20 international score by an Australian.