Saints kicked seven successive goals on a run from early in the first quarter until halfway through the second term, to at one point lead by 39 on their way to a 11.12 (78) to 10.14 (74) victory.
GWS got within four in the last 23 seconds, kicking five of the six goals in the final quarter.
St Kilda ended a run of four straight losses to GWS, who dropped to 1-2 for the season after consecutive losses.
View this post on Instagram A post shared by AFL (@afl)
The Saints superior pressure, better ball use and more accurate goalkicking had them well in front for most of the day, though they kicked just three goals after halftime.
Their forward-half pressure harried the Giants into numerous errors and led to 39 of their 56 first half points.
The start of the game was delayed 50 minutes due to lightning in the vicinity of the ground, and despite GWS spearhead Jesse Hogan kicking the first goal when play started, but the visitors dominated the rest of the term.
They kicked five unanswered goals, two of them to Jack Higgins, to lead by 25 at the first break.
St Kilda also had 18 more contested possessions in the first quarter and won six of the seven centre clearances.
Saints kicked the first two goals of the second quarter before GWS produced some resistance.
Goals to Harry Rowston and Ryan Angwin briefly stopped the bleeding but Max Hall pounced on another GWS error to ensure the Saints won the second quarter and were ahead by 32 at halftime.
View this post on Instagram A post shared by AFL (@afl)
An improved GWS had 15 more inside 50s than the Saints in the third quarter, but closed the deficit by just four points, as they wastefully kicked 2.7 for the term.
Jack Sinclair had 32 dsiposals, Nasiah Wanganeen-Milera finished with 27 possessions, five clearances and four score assists for St Kilda, who benefited from two goals each from Higgins and Alix Tauru.
Lachie Ash gathered 38 possessions and Clayton Oliver had 33 for GWS, with hogan and Phoenix Gothard kicking two goals each.