After opener Aaron Finch’s confident 96-run knock, Australia were placed comfortably at 216 for two in a chase of 268 but India staged a late comeback by taking three quick wickets.
India dismissed Steve Smith (47), Finch and George Bailey (5) in a gap of 23 balls to raise hopes of a turnaround but Brad Haddin (13) and James Faulkner (9) batted sensibly to deny India a dramatic finish.
The hosts ended at 269 for six in exactly 49 overs with Faulknar dispatching a Bhuvneshwar Kumar full-toss to boundary ropes for winning runs.
Electing to bat, India had posted 267 for eight, built around Sharma’s 138-run knock, his sixth one-day hundred. He blasted nine boundaries and four sixes in 139 balls to score his third century against Australia.
The Mumbaikar put on 126 runs for the fourth wicket with Suresh Raina (51) even as Australian paceman Mitchell Starc produced a fine bowling display to pick 6-43 in his 10 overs.
Australia began their chase in a confident manner with Finch and David Warner (24) putting on 51 for the first wicket. Umesh Yadav broke the stand by dismissing Warner but seasoned Shane Watson lent solidity to the Australian innings with his 41.
Yadav denied Finch his sixth ODI hundred by having the batsman caught behind but at that time Australia were only 49 runs away from the victory target.
Finch controlled his 127-ball innings well, hitting five shots to the fence and two over the ropes.
Smith (47), Watson and Glenn Maxwell (20) did not score big but their contributions proved crucial for Australia, who had also beaten England in the tri-series opener on Friday.
India will take on England in their second match on Tuesday and again square off against Australia on January 26.
Australia’s chase looked on course but things went awry in the 40th over with the loss of Smith, who swatted a slower short-delivery from Mohammed Shami straight to R Ashwin at mid-wicket.
It sparked a mini-collapse as Finch was dismissed by Yadav in the very next over and Ashwin had Bailey stumped.
Shami hobbled off with a possible knee-injury in the 47th over and Bhuvneshwar Kumar (1-44) gleefully accepted a lobbed up return catch to dismiss Glenn Maxwell (20).
It looked like a closer finish than expected but Faulkner and Haddin held their nerves to romp home.
Earlier, India had a horrendous start as they were reduced to 59 for three in 12.5 overs. Opener Shikhar Dhawan (2) was removed in the first over of the innings itself, caught at second slip off Starc.
Ajinkya Rahane (12) had been listed to bat at number four in the team-sheets but he came out at the fall of the first wicket. He put on 30 runs for the 2nd wicket with Rohit.
Just as they were beginning to look comfortable at the crease, debutant Gurinder Sandhu (1-58) got Rahane to attempt a high cut and instead was caught behind by keeper Brad Haddin. That brought Virat Kohli (9) to the crease but the star batsman was off-colour today.
He miscued a pull-shot off Faulkner (1/63) and was caught by skipper George Bailey at mid-on, shortly after India had crossed the 50-mark in the 11th over.
Raina then joined Rohit at the crease and two played sensibly to dig their side out of the rot. The left-hander was dismissed in the 35th over. The opener along with captain Mahendra Singh Dhoni brought up the 200-mark in the 40th over.
But Starc returned to the attack and removed three Indian batsmen — captain Dhoni (19), Axar Patel (0) and Bhuvneshwar Kumar (0).
The fourth wicket stand between Rohit and Raina formed the bedrock of the Indian innings as the duo stabilized the visitors after being pushed on the back foot.
Rohit rotated strike as much as he could, early on in their partnership, while the left-hander took his time to find comfort at the crease.
By the time their 50-run partnership came up in the 23rd over, runs had started to flow with ease. There was a small confrontation between David Warner and Rohit with an overthrow the topic of discussion. But the batsman took it in his stride to reach his fifty off 68 balls.
Thanks to the big ground, the two batsmen were made to run hard and they did so well enough, chancing their luck against the Australian fielders on many occasions. They brought up their 100-partnership in the 31st over and this prompted them to take the batting power-play in the 34th over itself.
In the next over, Raina reached his 33rd ODI half-century off 61 balls but was also dismissed, hitting Starc straight to Glenn Maxwell at mid-on.
The fall of a wicket early in the powerplay meant only 19 runs came off it, even as Dhoni (19) and Rohit looked to up the scoring rate.
Rohit got to his hundred off 109 balls in the 37th over, his eventual score the highest in an ODI at this ground by an Indian batsman against Australia. The previous best was 100 runs by Sourav Ganguly way back in January 2000.
Dhoni and Rohit brought up the 200-mark in the 40th over, but then Starc returned to the attack to remove the Indian captain and Patel with a double-blow in the 44th over.
The latter was unlucky to be given out LBW by umpire John Ward as the ball was clearly missing leg-stump.
R Ashwin (14*) who had been surprisingly held back then arrived in the middle to help add 25 runs for the 7th wicket as the 250-mark came up in the 47th over.
Ashwin was dropped by Pat Cummins (0-52) in the next over but Starc still managed to get his 5th wicket as Rohit was out caught at mid-wicket. He then bowled Kumar who missed a simple full-toss first ball.
The hat-trick was avoided by Mohammad Shami (2*) as the last ten overs yielded just 61 runs for the loss of four wickets.