The Gunners had been second best for long spells, and despite an improved performance after the break, the Swans earned reward for their persistence when Spain forward Michu grabbed a late brace.
Jeers greeted the final whistle at Emirates Stadium, as manager Arsene Wenger's side dropped more points and fell further behind in the battle to break back into the top four.
Gunners fans backing the 'Black Scarf Movement' had demonstrated around the ground before kick-off, complaining at the perceived commercialisation of the club following their move to the Emirates Stadium.
On the pitch, Wenger opted to deploy Ivory Coast forward Gervinho in the central striker role ahead of Theo Walcott, who had netted an early goal in the midweek 1-1 draw at Everton.
However, it was Swansea who were the first to press, with a free-kick into the Arsenal penalty area eventually being hacked away by Per Mertesacker.
In the 14th minute Arsenal goalkeeper Wojciech Szczesny made a fine double save after Angel Rangel had been played in on the overlap down the right and fired in a low, angled drive with his follow-up effort also blocked by the agile Pole.
Arsenal failed to get any sort of rhythm together in the first 20 minutes, far too careless in possession and lacking ideas in the final third.
Carl Jenkinson, in for injured right-back Bacary Sagna, whipped a cross through the six-yard box, but Gervinho could not make contact.
The hosts finally got some momentum, with Santi Cazorla headed at Swans goalkeeper Gerhard Tremmel after another good cross from Jenkinson.
Nathan Dyer suddenly burst clear through on goal from a flick by Miguel Michu, but Arsenal captain Thomas Vermaelen made up the ground to produce a brilliant sliding block just as the Swansea forward shaped to shoot.
Eight minutes before the break Michu was bundled over by Mikel Arteta at the edge of the Arsenal penalty area. Jonathan de Guzman whipped his free-kick up over the wall, but also the crossbar.
Arsenal offered little in way of attacking threat, and when Podolski did send over a good cross from the left, Gervinho failed to make a clean connection as the ball bounced away to the corner flag - which just about summed up the first half for the hosts.
Arsenal emerged with much more vigour for the restart.
Cazorla shot straight at the goalkeeper following good work by Jack Wilshere.
Gervinho's run to the edge of the Swansea box was halted by Chico, but referee Mark Clattenburg waved play on.
There was still threat on the counter-attack from Swansea, though, as Rangel got clear again down the right, with Szczesny making another important block at the near post.
With 24 minutes to go, Wenger made a double change as Olivier Giroud and Alex Oxlade-Chamberlain replaced Podolski and Gervinho.
French striker Giroud was put clean through straight away, but was caught by a desperate lunge from Chico - with referee Clattenburg indicating he felt the Swansea defender got the slightest of touches, much to the disbelief of Wenger.
With 11 minutes left, Wilshere was replaced by Tomas Rosicky as the injury-plagued Czech midfielder made his first appearance since May.
Swansea created another good opening when substitute Dwight Tiendalli cut into the right side of the Arsenal box, but again Szczesny produced a smart block.
With five minutes left, Vermaelen's flying header just lacked the pace to beat Tremmel.
Swansea, though, took the lead when Michu broke clear after a neat one-two with substitute Luke Moore to slot past Szczesny and leave more questions for Wenger to answer about the character of his side.
It got worst for the Gunners in stoppage time when Michu again latched onto a long clearance, racing through to beat the keeper again.