Alex Sexton, Jack Martin and Jack Lukosius were all guilty of missing gilt-edged chances with the Dockers making the most of the Suns’ wastefulness to turn a three-point halftime deficit into a nine-point lead at the final turn.
When Travis Colyer booted the opening goal of the final term, the Dockers appeared to have escaped with a win, but the Suns finally found their shooting boots when it mattered.
Martin and Sexton both scored to reduce the margin to three before Swallow’s ice-cool finish secured a much-needed win for Stuart Dew’s men.
Swallow, who had to pass a late fitness test on Saturday to play the match, ended with 30 disposals, while defender Jarrod Harbrow was immense across the backline, picking up 32 disposals and nine marks.
Sexton celebrated his new long-term contract with four goals to be the Suns’ only multiple goalscorer.
The Dockers had three players with two goals apiece in Colyer, Cam McCarthy and Matt Taberner, but they were a fair cry from the potent force who last weekend belted 21 majors past North Melbourne.
Bradley Hill (32 disposals, six marks, five tackles) and superstar Nat Fyfe (31 disposals, 10 marks) were standouts in a losing performance for the Dockers.
Gold Coast next face the Western Bulldogs in Melbourne while Fremantle will look to bounce back next weekend when they host unbeaten St Kilda.