The second ton in just five limited-overs outings from Hughes laid platforms for Australia to level the five-game series at 2-all as Sri Lanka always struggled in pursuit of 248 to win the Hobart clash.
In reply to Australia's 5-247, the tourists were always up against a tight and disciplined Aussie attack in their run chase and were bundled out for 215 in the 49th over.
Aspiring captain Angelo Mathews put up a lone hand bid for victory with 67 from 79 balls before he was the first of two vital victims claimed by Aussie paceman Mitchell Johnson.
Johnson snared 2-45 from his 10 damaging overs.
Wily Aussie left-arm spinner Xavier Doherty was the chief destroyer with three wickets for a miserly 21 runs from his match-turning eight-over spell.
Sri Lanka threatened with an enterprising start at 0-57 in 12 overs, until the cagey Doherty sent captain Mahala Jayawrdene (38), Lahiru Thirimanne (one) and Dinesh Chandimal (six) all packing inside eight overs.
The tourists tumbled to 4-77 in the 21st over.
New all-rounder Moises Henriques (3-32) also chimed in with three wickets from his 10 overs as Sri Lanka's run-chase derailed.
Big seamer Clint McKay (2-50) chipped in with a handy supporting spell with the ball.
Hughes played almost a lone-hand with a splendid 138 not out after starting the day surprisingly batting at number three.
The re-born left-hander was recalled to Australia's Test team last month after a year in exile rebuilding his batting technique and managed a second century after his historic first up 112 against Sri Lanka at the MCG almost a fornight ago.
Hughes, 24, was surprisingly used at number three in a revamped Aussie top-order in Hobart when wicketkeeper Matthew Wade opened up with Dave Warner.
Hughes steadied the Aussies after Australia's shaky start at 2-37 when Warner and then Wade departed inside the first 10 overs.
Hughes and gritty all-rounder David Hussey (34) laid foundation to their rescue mission with a vital 98 runs for the fourth-wicket in a little more than 17 overs.
Hussey made the only other significant individual contribution in his bold support role to Hughes.
Hussey ended his important cameo with another botched running attempt.
He hit the ball straight back to seamer Thisara Perera and his return throw caught the right-hander short of his ground attempting to get back into his crease at the end of the 44th over.
Acting Australian captain George Bailey battled his way to 17 from 43 balls before he was caught and bowled by Perera in the 26th over.
The normally free-hitting Warner was out in the seventh over after Sri Lanka captain Mahela Jayawardene won the toss and somewhat surprisingly sent the home side in to bat.
Warner's departure in the seventh over slowed things down for the Aussies and then Wade went for 23 from 28 balls, with four boundaries in his hasty start.
Warner went for 10 from 18 balls in a somewhat uncharacteristic subdued start.
The tourists have crashed back into the five-game series with successive winning run-chases in Adelaide and Brisbane after losing the opening match batting second when Australia posted a first-up 305 at the MCG on January 11.
Warner was rested for that series opener when Hughes made a stunning debut 112 as the first Australian to ever make a century in his inaugural one-day outing.
The Aussie line-up suffered a setback with confirmation that captain and star batsman Michael Clarke would not play because of an ankle injury he suffered at team training on Tuesday morning.