A clinical Fulham performance condemned Leicester City to their seventh straight Premier League defeat and piled the pressure on Foxes manager Ruud van Nistelrooy.
Leicester, who remain 19th in the table, have lost seven of the nine league games the Dutchman has been in charge for.
On his 100th appearance in the Premier League, Emile Smith Rowe opened the scoring for the visitors just after half-time with a brave diving header.
Harry Wilson’s ball across the box was flicked on by Sasa Lukic and the former Arsenal midfielder threw himself in front of Jakub Stolarczyk to score his fourth of the season.
Substitute Adama Traore secured the points for Marco Silva’s side in the 68th minute when his brilliant side-footed volley flew past Stolarczyk into the bottom corner.
Boos, and shouts of “you don’t know what you’re doing”, were aimed at Van Nistelrooy when he substituted forward Bilal el Khannouss in the second half.
After Smith Rowe’s opener, Raul Jimenez missed a huge opportunity to double Fulham’s lead but he could only direct his header wide.
Both teams had a case for a penalty, with Boubakary Soumare going down for Leicester before Traore’s appeals were waved away.
Substitute Rodrigo Muniz looked to make it 3-0 with minutes to play but his effort went the wrong side of the post.
The Foxes remain on 14 points – two points adrift of safety – and face a trip to Tottenham next, while Fulham move up to ninth.