Trailling by 33 points in the second quarter and playing well below their best, the Swans fought back on Sunday to deny the Saints 15.14 (104) to 15.12 (102).
Big-name St Kilda recruits Liam Ryan, who kicked five goals, Tom De Koning and Jack Silvagni all starred, while Swans midfielder Chad Warner kicked a crucial late goal to cap his 29-disposal game.
The Swans lost Justin McInerney, Tom McCartin and Riley Bice to injury during the match.
Serong's snapped goal put Sydney one point ahead - the first time they had led since the opening quarter. At the last centre ball up, the Swans were able to clear and Joel Amartey kicked a point after the siren.
McInerney snared the first goal of the game in the opening minute, but the Saints quickly replied with two through Ryan.
St Kilda kicked clear with four of the last five goals of the term to take a 17-point lead at the first break.
With Nasiah Wanganeen-Milera, Ryan and Mitch Owens back in the team, St Kilda were a completely different proposition in attack after going goalless in the first half against Hawthorn last round.
Sydney were rattled and the Saints extended their margin to a game-high 33 in the second quarter.
The Swans fought back and reduced the deficit to just eight points at halftime. But adding to their problems, McInerney was forced out of the game late in the opening half with hamstring tightness.
Heavy contact from Ryan in a marking contest also concussed McCartin.
St Kilda broke out again in the third quarter and led by 18 points. But just when the Swans again looked shaky, Isaac Heeney snapped a brilliant goal at 31 minutes and let his tag Marcus Windhager know all about it.
Seconds before three-quarter time, Wanganeen-Milera had a rare fumble that opened the door for Charlie Curnow to kick a goal.
St Kilda only led by six points at the last break and the Swans could smell blood.
Hayden McLean's second goal made it a one-point ball game early in the last term, before Bradley Hill's first and Ryan's fifth gave St Kilda a small break.
The man known as Flyin' Ryan took a mark of the year contender to set up his last goal for a career-best haul.
But there was still plenty of time left and the two teams swapped scoring chances.
Warner's second goal inside the last four minutes brought Sydney to within four points.
Nick Blakey then charged forward, with Silvagni marking his shot on the goal line before Serong kicked the match winner.
Despite Windhager's attention, Heeney still racked up 30 disposals and it was his handball out of a stoppage that set up Serong for the decisive goal.