Bukayo Saka gave Arsenal the lead after just five minutes, but the visitors were toothless after that as Raul Jimenez equalized in the first half and Bobby De Cordova-Reid poked in the winner in the 59th.
Fulham equalised around the half-hour mark with a swift counter when Tom Cairney’s cross from the left flank was fired into the net by Jimenez.
The hosts took the lead at the hour-mark with Willian’s corner causing a scramble in the Arsenal box leading to De Cordova-Reid’s finish.
The win ended Fulham’s three-game losing streak, as they rose to 13th in the table with 24 points.
Arsenal, who were top of the table on Christmas day, have ended the year fourth after going winless in their last three matches.
(With inputs from Reuters)