Michael Laudrup's men went into their final Group A encounter knowing that a draw would be enough to see them progress to the knockout stages.
Even with a slip-up, only a three-goal swing and a victory for Kuban Krasnodar over Valencia would have been enough to see the Welsh club eliminated from the competition.
St Gallen - playing for nothing more than pride - struck the winner 10 minutes from time, as Marco Mathys found the net from close range.
Swansea could not respond, but the result was made immaterial by Valencia's 1-1 draw with Kuban in Spain.
Wilfried Bony returned from his hamstring injury to solve Laudrup’s striker problems, the Ivorian coming in as part of six changes made by the visitors from their 1-1 draw against Hull City, with Wayne Routledge and Alejandro Pozuelo also included.
St Gallen, meanwhile, made just one alteration from their 2-0 win over Sion, Marcel Herzog replacing Daniel Lopar in goal.
Swansea were the first to have an effort on goal after eight minutes as Roland Lamah curled wide of the post from the edge of the area.
But having survived that scare, the hosts were dealt a blow shortly afterwards when striker Goran Karanovic - who has 12 goals to his name in all competitions this season - was replaced by Alhassane Keita after suffering a hamstring injury.
Chances proved few and far between for the rest of the first half, with the two sides reduced to speculative efforts from long range.
However, Swansea perhaps should have taken the lead after 32 minutes when Lamah found space on the edge of the penalty area only to fire narrowly off target.
Bony went close immediately after the half-time interval, but they had goalkeeper Gerhard Tremmel to thank for keeping them on level terms a few moments later as he produced a fine save to deny Mathys.
And the German was forced into action shortly before the hour mark to keep out Roberto Rodriguez's effort after the winger had beaten the Swansea offside trap.
Fortune favoured Swansea for much of the second half, with only the woodwork preventing Sebastien Wuthrich's free-kick from finding the net.
Defender Chico Flores went off with an injury for Swansea shortly after that scare, and their defence looked to have finally been breached when Neil Taylor bundled the ball into his own net under pressure, however, the goal was ruled out for a push by Wuthrich.
Swansea's defensive efforts became more desperate in the closing stages, Jose Canas clearing a Mathys header off the line, but the Swiss club finally snatched a deserved victory when the same player volleyed home Wuthrich's left-wing cross.
A tense finale followed for Swansea, but as news of Kuban's draw in Valencia filtered through, their progress was confirmed.
Thank you for reading 5 articles this month* Join now for unlimited access
Enjoy your first month for just £1 / $1 / €1
*Read 5 free articles per month without a subscription
Join now for unlimited access
Try first month for just £1 / $1 / €1