Fulham could count themselves unfortunate not to have taken at least a point having battled gamely following the early sending off of midfielder Steve Sidwell - just back from a three-match suspension - for a late sliding tackle on Mikel Arteta.
Arsenal, though, failed to make the most of their man advantage after going ahead just before half-time through a close-range header from Per Mertesacker.
Referee Andre Marriner then brandished the red card again on 90 minutes when he sent off Olivier Giroud for jumping into a challenge on Stanislav Manolev, although replays showed the France striker did get a foot on the ball first.
Arsenal, though, closed out stoppage-time as Fulham were urged on by the home support to move ahead of Chelsea, who play at Liverpool on Sunday, and now five clear of Tottenham, their rivals having two matches in hand ahead of their Sunday encounter with Manchester City at White Hart Lane.
Arsenal boss Arsene Wenger had decided to rest England midfielder Jack Wilshere, with Czech playmaker Tomas Rosicky coming into the side, as did Nacho Monreal, who had been on the bench for the midweek goalless draw against Everton, while Wojciech Szczesny continued in goal as Lukasz Fabianski was still injured.
Fulham, well beaten 3-0 here by west London rivals Chelsea in midweek, started brightly, and Arteta had to cut out a dangerous cross from Urby Emanuelson
At the other end, Giroud played in Theo Walcott, who finished well past Mark Schwarzer, but the offside flag was already up.
Fulham were reduced to 10 men on 13 minutes when Sidwell went in late on Arteta, catching the Arsenal midfielder on his ankle which resulted in referee Marriner going straight for a red card.
Former Arsenal trainee Sidwell had just returned from a three-match suspension for a similar late challenge on QPR's Armand Traore, and could now see his suspension increased for poor discipline.
The home fans roared their team on against the odds, and Dimitar Berbatov forced a good stop from Szczesny after breaking down the right and into the Arsenal penalty area.
Slowly, the visitors built up a spell of pressure.
Giroud was unfortunate on 35 minutes when he spun his marker on the edge of the Fulham box before driving a low shot across the face of goal, which beat Schwarzer, but hit the outside of his left-hand post.
Szczesny, though, was called into action again when Emanuelson robbed Monreal and drilled in a low shot, which the Pole got down well to push behind.
Arsenal were ahead three minutes before the break.
Eyong Enoh fouled Aaron Ramsey conceding a free-kick some 35 yards out on the right. Walcott floated the ball into the box, and
Laurent Koscielny headed it back across the face of goal, where German centre-half Mertesacker arrived unmarked to nod in from a yard out.
Referee Marriner was at the centre of controversy again at the start of the second half when he showed Arteta a yellow card after Emanuelson went down following a quick break, with replays suggesting it was a dive by the Dutchman.
To their credit, Fulham continued to press Arsenal rather than just sit back.
However, Berbatov was offered little support with Bryan Ruiz forced into a deeper role.
Szczesny had to be alert to palm over a cross from Manolev which looked to be dipping in, before Koscielny headed away as Berbatov arrived at the far post from the resulting corner.
With 20 minutes left, Walcott was replaced by Wilshere, while Lukas Podolski came on for Rosicky.
Fulham had the ball in the net when Manolev tapped home after Szczesny spilled a 20-yard free-kick from Kieran Richardson - but assistant referee Sian Massey made a fine offside call.
Arsenal remained dangerous on the break, with Santi Cazorla's angled drive blocked after intelligent build-up from Monreal and then Wilshere.
Arsenal also finished with 10-men after Giroud was shown a red card after he clattered into Manolev.
Ramsey skewed a shot wide after a quick break in stoppage time, but Arsenal had just about done enough to give their Champions League hopes a major boost.