Sri Lanka, after collapsing to 27 for three, saw captain Mahela Jayawardene (72) and Chamara Silva (64) put on 120 for the fourth wicket before both batsmen fell in quick succession to left-arm wrist spinner Hogg.
The former postman finished with two wickets for 35 runs from his 10 overs while left-arm quick Nathan Bracken did a superb job at both ends of the innings in a miserly return of four for 19 from 9.4 overs.
Sri Lanka, from 167 for three, lost their last seven wickets for 59 runs.
And it needed some determined tailend hitting from Malinga Bandara (17) and Farveez Maharoof, last man out for 25, to give them a competitive score.
Both sides had already qualified for the semi-finals and Sri Lanka, already without injured quick Lasith Malinga (ankle ligaments), also opted to rest key bowlers Chaminda Vaas and Muttiah Muralitharan ahead of a possible last four or final clash with Australia.
Between them the trio had taken 41 wickets at this World Cup, shifting the onus onto their batsmen if they were to beat Australia.
But their top order had to face the title-holders' first-choice attack as Australia looked to extend their World Cup record of 25 unbeaten games.
And Sri Lanka, after Jayawardene won the toss, suffered a collapse that saw three wickets lost for one run in 14 balls.
Veteran opener Sanath Jayasuriya fell first when he was lbw for 12, playing across the line, to Bracken.
After wayward quick Shaun Tait's first two overs cost 18 runs, Glenn McGrath needed just three balls to strike when Kumar Sangakkara, caught on the crease, was lbw for nought.
Bracken then dismissed Upul Tharanga, aided by Matthew Hayden's well-taken catch after Australia captain Ricky Ponting dived across from second slip.
Jayawardene countered by pulling McGrath for four and Silva followed up with a flashing square-cut off Tait.
Jayawardene then inflicted further punishment on Tait with a leg-glance before hooking the South Australian for a superb six that brought up his fifty in 64 balls, also featuring five fours, and a century stand with his 27-year-old partner.
Silva followed his skipper to fifty in 91 balls with six fours.
But Hogg ended the 31-over stand when he had Silva top-edging a sweep to Michael Clarke at short fine leg.
Then 167 for four became 174 for five when Jayawardene, stretching forward, was stumped by wicket-keeper Adam Gilchrist as he played for turn.
Tait then removed Tillakaratne Dilshan and Russel Arnold cheaply as the 1996 champions slumped to 183 for seven.
Bandara - in for Murali - struck a couple of sixes to take Sri Lanka past 200 before Maharoof weighed in with four boundaries in a 22-ball stay before falling to Bracken in the last over.
Sri Lanka 226 all out in 49.4 overs (Jayawardene 72, Chamara Silva 64, Maharoof 25; Bracken 4 for 19, Hogg 2 for 35, McGrath 2 for 48) Vs Australia (yet to bat).