The Gunners had silenced the home support by taking an early lead through captain Robin van Persie, who latched on to Andrey Arshavin's pass and checked before firing past Steven Caulker and goalkeeper Michel Vorm from a tight angle.
The breakthrough initially knocked the wind out of Swansea's sails but they were level after 16 minutes. After sharp play down the left by Joe Allen, Nathan Dyer went down under Aaron Ramsey's challenge and referee Michael Oliver awarded a penalty. Scott Sinclair converted into Wojciech Szczesny's left-hand corner to maintain his 100% record from the spot this term.
Dyer put Swansea ahead after 57 minutes. Ramsey was easily robbed by Wales team-mate Allen and the midfielder picked out Dyer for the winger to shoot high into the net.
Swansea were having their best spell of the game but they were made to pay for a poor lapse in defence as Johan Djourou's pass set up Theo Walcott to clip the ball over Vorm and level after 69 minutes. But parity lasted less than a minute as substitute Gylfi Sigurdsson's pass saw Graham race in and capitalise on Szczesny's hesitancy in advancing from his line to put Swansea back in front.
Per Mertesacker should have levelled two minutes later but the German defender horribly scuffed his effort wide.