The opening batsman hit 112 off 129 balls and put on 140 for the third wicket with skipper George Bailey, who made 89, as the home side made hay on a batsman-friendly wicket at the MCG.
Bailey won the toss and elected to bat, showing confidence in his top three - Hughes, Aaron Finch and Usman Khawaja - who were all making their one-day international debuts in what is the first of five matches between the two sides.
Sri Lanka were struggling to create chances but a change of bowling brought a change of fortunes. With his fifth ball Ajantha Mendis got decent bounce and Finch tickled behind to wicketkeeper Dinesh Chandimal to be out for 16, leaving Australia 53 for one in the 11th over.
The home side lost their second wicket when Khawaja was run out four overs later. Diving for the crease, the 26-year-old's bat bounced off the ground as Chandimal whipped the bails off.
Bailey got off the mark with a boundary, as he deflected a leg-side Mendis delivery to the ropes, but Australia continued to have trouble running between the wickets and twice poor throws prevented the visitors from running the skipper out.
Hughes reached his half-century, but Sri Lanka's tight lines frustrated the hosts who managed just one boundary between overs 17 and 23, but Bailey then picked up boundaries in consecutive overs, while Hughes hit his ninth four in the 26th over to move into the seventies.
A much-needed Lasith Malinga maiden in the 30th over kept the home side at 156, but Bailey moved to his half-century off just 44 balls from the next delivery.
Hughes moved to three figures in the 37th over, clipping to mid-wicket for a single to complete his century off 123 balls. Reaching the landmark seemed to take the pressure off Hughes, who hit consecutive fours in the 38th over to take Australia to 212, before he edged to Chandimal off Malinga.
Bailey continued to score freely but fell on 89 from 79 balls after smashing a half-tracker straight down the throat of Jeevan Mendis at deep mid-wicket, while Glenn Maxwell fell cheaply to Nuwan Kulasekara, as Australia moved past 250 with six overs left. A typically busy 60 off 34 from David Hussey helped the home side to what looked a challenging total.