The Cats were 27 points up at the final change and despite the Swans narrowing the gap to seven points at one stage, ran out winners 12.12.84 to 9.11.65.
In their last match, against the Western Bulldogs two weeks ago, the Cats surrendered a 47 point second quarter lead and a three goal advantage at the last change, but they proved more resolute today with Clint Bizzell and Mitchell White kicking the last two goals.
Geelong logged over 40 more marks, kicks and handballs than the error-prone Swans and countered Sydney's flooding defence with a patient high percentage, low-risk game.
The victory lifted Geelong into a group of clubs on 24 points, just one win outside eighth spot.
Sydney led by four at the first break, but trailed by 16 late in the second term until veteran midfielder Stuart Maxfield kicked two well taken goals to cut Sydney's halftime deficit to just three.
Geelong broke open a previously close game by kicking five goals to one in the third quarter with Kent Kingsley kicking two of his game high three majors near the end of the term.
Frustrated by his players' failure to pick up opponents and lack of attack on the football, Swans coach Rodney Eade delivered his first real rev up of the year at the final change.
The Swans responded by kicking the first three goals of the final quarter until Bizzell quashed their revival with a goal following a juggled mark.
Justin Murphy galvanised Geelong with 29 possessions and six marks while Brenton Sanderson (18) and (10) and Matthew Scarlett (17) and (12) were other prominent performers for the visitors.
Scoreboard:
GEELONG: 2.5, 5.10, 10.12, 12.12 (84)
SYDNEY SWANS: 3.3, 5.7, 6.9, 9.11 (65)
Goals: Geelong: K Kingsley 3 M White 2 G Hocking 2 D Milburn J Murphy G Kilpatrick B Graham C Bizzell. Sydney Swans: S Maxfield 2 A Goodes 2 N Fosdike P Williams G Stafford M O'Loughlin J Ball.
Injuries: Geelong: C Ling (corked thigh). Sydney: A Schauble (hamstring) replaced in selected side by G Bennett, A Dunkley (broken nose).
Reports: Nil.
Umpires: R Kelsey, M Ellis, C Mitchell.
Official crowd: 26,760 at SCG.