Saints coach Scott Watters had called pre-game for the club's on-field leaders to stand up and they answered superbly to keep their side in touch with the top eight.
Goddard had a huge first half to set the standard for the Saints, Lenny Hayes picked up 28 touches and three goals, while Nick Dal Santo and Leigh Montagna caused plenty of damage with their sharp ball use.
Captain Nick Riewoldt took 14 marks and booted four goals, including three in the first 10 minutes, constantly outrunning veteran opponent Brian Lake, who had a very disappointing day.
The victory kept St Kilda within one win of eighth-placed North Melbourne and with a superior percentage to the Kangaroos.
It was the Bulldogs' sixth straight loss.
Despite Riewoldt's strong start, the Bulldogs kept within eight points at the first change.
The Saints continued to control the game, but simple missed shots by Beau Wilkes and Ahmed Saad late in the second term kept the halftime margin to 24.
But it quickly blew out, St Kilda scoring 5.7 to one behind in a dominant third quarter.
After Daniel Giansiracusa kicked the Bulldogs' fourth goal almost 18 minutes into the second quarter, their next did not come until 16 minutes into the last.
The Saints outscored them 9.15 to 0.2 in the intervening stretch to move as many as 79 points clear.
Adding to the Dogs' problems, midfielder Daniel Cross was subbed off with a shoulder injury in the second quarter, after being driven into the ground by a Wilkes tackle.
St Kilda's Adam Schneider was subbed off midway through the third term and had his upper leg iced.
Another slight concern for the Saints was a second quarter incident in which goalsneak Stephen Milne swung his arm backwards into Lake's midriff.
While the blow did not look of sufficient force to constitute a strike, Lake spent time hunched over in discomfort.
Backman Robert Murphy was one of the few stand-out Bulldogs, keeping Milne goal-less until nearly fulltime, while Matthew Boyd, Ryan Griffen and Liam Picken battled hard.
St Kilda next meet Collingwood on Saturday night, while the Dogs face North Melbourne on Saturday.