The Gunners were looking to keep up the pressure on Manchester City in the battle for second place in the Barclays Premier League, and created enough chances to win the match comfortably.
However, Fabianski – who left north London last summer in search of regular first-team football – produced a string of fine saves before Gomis completed a smash-and-grab raid with a late header at the far post, which was given by the goal decision system after David Ospina had tried to claw the ball out.
Midfielder Aaron Ramsey shrugged off a leg problem to make the starting XI, which was unchanged for the fifth straight league match.
The Wales international, a graduate of the Cardiff academy, was soon at the heart of the action, clipping over a cross which Olivier Giroud headed onto the roof of the net.
Swansea, who still harboured outside hopes of securing Europa League qualification, offered some threat on the counter, with Gylfi Sigurdsson at the head of a 4-3-3 system supported by the industrious Jonjo Shelvey.
On 28 minutes, Alexis Sanchez went down in the penalty area after appearing to have been tugged back by Neil Taylor as he tried to get on the end of a free-kick, but referee Kevin Friend signalled play on.
After the tempo of the match had dropped with both sides unable to make any real progress in the final third, Giroud turned Swansea captain Ashley Williams to find some space 20 yards out and lashed a half-volley just wide of Fabianski’s goal.
Arsenal finished the first half in positive mood, as Ramsey was just unable to get on the end of a long, defence-splitting pass from Sanchez, which bounced away and through to the Swansea keeper.
The Gunners, who had won nine of their last 10 league matches, started the second half with some purpose, as Giroud almost converted a low cross at the near post from right-back Hector Bellerin before Sanchez lashed an angled drive into the side-netting.
Mesut Ozil then played a neat square pass to pick out Giroud in a crowded penalty area, but the French forward could only send a tame effort straight at Fabianski.
Arsenal continued to press, with Ramsey the next to fire just wide from a tight angle after another swift counter down the right and Fabianski blocked a close-range effort from Santi Cazorla.
With 24 minutes left, Jack Wilshere came on, replacing defensive midfielder Francis Coquelin, to make his 150th Arsenal appearance before Giroud made way for Theo Walcott.
Arsenal had finally found a second gear, with Swansea forced into some desperate deep defending.
Fabianski, who helped Arsenal win the FA Cup last season, came to Swansea’s rescue again when he blocked a point-blank shot from Nacho Monreal after the right-back got into the area on the overlap.
The Poland stopper was having one of those nights as he beat away Sanchez’s snap-shot and then scrambled across to save Walcott’s follow-up, which really should have been buried from 10 yards out.
There was then late drama at the other end as Swansea snatched a winner with just four minutes left.
Following a counter-attack, Jefferson Montero floated the ball over from the left, which was nodded down towards the opposite corner by Gomis. Arsenal goalkeeper Ospina looked to have scooped the ball out, but the GDS signalled to the referee correctly that it was over the line.
There was little time to mount a fightback and Arsenal were left to reflect on just how they did not take something from the match, and must now regroup for Sunday’s trip to Manchester United.