The Gunners went behind to a precise finish from Hatem Ben Arfa in the first half but they were level 55 seconds later when Robin van Persie held off Mike Williamson’s challenge to slot home Theo Walcott’s cross.
Van Persie, Tomas Rosicky and Gervinho were all guilty of wasting good chances in the second half and the game looked beyond Arsenal, but Vermaelen popped up in the 95th minute to rifle home Walcott’s cross from close range to snatch all three points.
The last-gasp win, Arsenal’s fifth on the bounce, means the 10-point gap that once separated them from Spurs has now been reduced to one – and the Gunners all of a sudden seem well-placed to achieve the top-four finish that seemed way beyond them at the turn of the year.
Having stretched their unbeaten run to four games with an impressive hammering of AC Milan last week, it looked as if tonight’s game was set to be a stroll for the home side, and it started as such on a chilly night in north London.
Walcott found space on the touchline and whipped across a wicked pass, but Van Persie somehow failed to tap in from six yards.
Cheick Tiote was lucky to escape without a booking after sinking his studs in to Alex Song’s ankle with a late challenge.
The Gunners were dominating but the home crowd were stunned in to silence in the 15th minute when the Magpies took the lead.
Vermaelen erroneously passed to Tiote and the ball found its way to the right flank, where Ben Arfa cut inside and fired a precise finish past Wojciech Szczesny.
The home crowd were on their feet less than a minute later, however, as Van Persie came to the rescue.
Walcott galloped down the right after being freed by Rosicky and he crossed for the Dutchman, who shrugged off Williamson’s challenge before slotting home.
A scrappy period followed. Arsenal’s build-up play was impressive but they were failing to test Tim Krul in the Newcastle goal.
Fabricio Coloccini did well to block Walcott’s shot as the ball pinged around the Newcastle box in the dying minutes of the first half.
Newcastle brought on James Perch for Davide Santon, who had struggled to keep tabs on Walcott during the first half.
The England winger did not take long to slip past his new marker, however, as he got to the byline and curled over a lovely ball but Rosicky headed at Krul.
Coloccini threw himself in to the line of Mikel Arteta’s shot to deny the Alex Oxlade-Chamberlain, who moments later delivered a pin-point cross to Van Persie but the striker could only muster a weak shot at Krul.
Rosicky, who earlier signed a contract extension, was in exquisite form, embarrassing Yohan Cabaye with a clever turn before finding Van Persie in the box, but he was again denied by Krul.
Rosicky then missed a glorious chance to put Arsenal ahead. He exchanged passes with Walcott, and found acres of space in the box but he mis-hit so badly that his shot went out for a throw.
Newcastle gifted Arsenal another chance to equalise 10 minutes from the end when Ben Arfa surrendered possession to Kieran Gibbs, who found Van Persie in the box but he fired well wide from a tight angle.
It seemed as if Arsenal were not going to find their way through as another chance to win the game escaped them.
Arteta’s corner somehow evaded everyone in the box apart from Gervinho at the back post but he horribly miscued wide.
Krul came to Newcastle’s rescue in the final minute, palming over a brilliant header from Vermaelen with an acrobatic save which looked to have saved the game.
Walcott drove a deflected shot over in injury time, which he felt struck Coloccini’s arm, but referee Howard Webb waved away his protests.
Arsene Wenger thought the game was over, sitting with his head in his hands, but Walcott’s 95th-minute cross dropped in to Vermaelen’s path and he finished from close range to send the home crowd in to ecstasy.
Disappointing scenes followed as Van Persie and Krul squared up in the aftermath of the goal. Both were booked and Krul had to be restrained after the final whistle.