The captain added 242 for the third wicket with George Bailey, who scored 112, to help the hosts overhaul India's 309-3 with four balls to spare.
Earlier, India's Rohit Sharma hit 171 not out to break Viv Richards' record for the highest score by a visiting batsman in an ODI in Australia.
The second game of the five-match series is on Friday in Brisbane.
Rohit's 171 off 163 balls, containing 13 fours and seven sixes, surpassed West Indies legend Richards' unbeaten 153 in Melbourne in 1979.
Smith compiled his best ODI score as he and Bailey shared the fourth-highest Australia stand in ODIs.
It was also Australia's third-highest ODI chase on home soil.
Bailey, who joined Smith at the crease with Australia 21-2 at the Waca, should have been given out first ball when he gloved Barinder Sran down the leg side.
Umpire Richard Kettleborough rejected the appeal and India were unable to review it because they had not agreed to use the decision review system (DRS).
Smith and Bailey's stand, which spanned 37 overs, trumped the 207 added for India by Rohit and Virat Kohli, who made 91.
It was India's highest second-wicket stand against Australia, beating the 199 added by Sachin Tendulkar and VVS Laxman in Indore in 2001.