Aleksandar Mitrović's powerful early drive settled matters on Filbert Way, in the Club's first outing of 2023.
Jamie Vardy and Youri Tielemans came into the XI for City, with Patson Daka and Kiernan Dewsbury-Hall - injured in the warm-up - missing out. While Leicester had fallen to two defeats since the FIFA World Cup, the Cottagers had gathered six points from their festive football.
Fulham's first chance came on four minutes. A swift counter led to Andreas Pereira's drive needing to be blocked by Luke Thomas, before Willian blazed over. An audacious gallop forwards from Kenny Tete then opened City up and they were lucky to see ex-Chelsea man Willian drill wide of the far post.
Boubakary Soumaré's withdrawal, on eight minutes, wasn't in the plan for Brendan Rodgers' men, before Daniel Amartey then deflected Mitrović's header over from Harrison Reed's cross. It had been a testing start against Marco Silva's in-form west London outfit.
Mitrović's 11th goal of 2022/23 would give the visitors their reward after 17 minutes, with the Serbian chesting Willian's cross down and slamming it past Danny Ward. City's first chance in fact came when Tim Ream almost inadvertently diverted Timothy Castagne's cross into his own net soon after.
There were heads in hands around Filbert Way seconds later. A precious chance came and went for the hosts when Tielemans twisted and turned on the right channel, before looping the ball up and onto the left boot of Ayoze Pérez, who skied his effort over the bar from around the six-yard line.
A give-and-go between Vardy and Barnes alarmed Fulham with 10 minutes of the half to go. Goalkeeper Bernd Leno got a hand to Vardy's cross, though, and the moment was lost. Wout Faes then picked out Tielemans, but the latter's cross came to João Palhinha in the middle of the Fulham area.
Albrighton's low ball across the goalmouth was also missed by Pérez and Vardy at the far post. The Foxes were creating, but Fulham were standing firm. Castagne also nodded wide, after a searching ball from Albrighton, as City searched for an equaliser which would never come before the break.
It was still 1-0 at the start of the second half, but Leicester were desperately unlucky not to be level when Thomas' inch-perfect pass found Barnes, who was in on goal. City's No.7 tried to dink the ball over the onrushing Leno, but the former Arsenal shot-stopper got there just in time to make a vital save.
Fulham needed Leno again 10 minutes into the new half, when Pérez slipped in Vardy - who hit the 'keeper's legs. Tom Cairney's foul on Pérez rightly earned the midfielder a yellow card, but when the whistle blew, there was outrage in the stands, with Tielemans being stopped in his tracks before he could break.
Light drizzle had become a downpour and Fulham's booking count was rising. With 20 minutes to play, Tete, one of those on a caution for the capital club, made a brave diving challenge on Barnes to take the ball out of his feet inside Fulham's area. Despite calls for a penalty, it appeared to be the right call.
The double introduction of Papy Mendy and Kelechi Iheanacho - replacing Ndidi and Thomas - offered late hope for the Foxes. The game was opening up too. A contentious throw-in call which caused fury on the away bench led to Pérez locking his sights onto the bottom corner. Leno tipped it behind, however.
Leno could only watch on 80 minutes as Tielemans chested a high ball down, on the edge of the area, and cannoned it onto the crossbar. Another nearly moment for Leicester, who just couldn't get through. The Belgian wizard later lashed a low shot inches wide of the near post from a similar range.
Rodgers' men were pushing for something, anything, but it was almost 2-0 at the outset of seven minutes of added time. Substitute Cairney spotted Harry Wilson charging through, only for the Wales international to bobble the ball the wrong side of Ward's left post.
Pérez missed the target in the dying moments too. There would be no more goals at either end, and no points for Leicester City.
Major moment - Mitrović's winner
Fulham's main man Aleksandar Mitrović did the business for the west Londoners, hitting the winner on 17 minutes.
Where do we stand? - 13th in the table
City stay 13th in the Premier League, on 17 points from 18 games, with a goal difference of -5.
Coming up - Three away days
Three away games in three different competitions are up next for Leicester, with Gillingham first up at Priestfield Stadium in the third round of the Emirates FA Cup on Saturday (12:30pm kick-off). It's Newcastle United at St. James' Park in the quarter-finals of the Carabao Cup next Tuesday (8pm kick-off), before a trip to the City Ground to face rivals Nottingham Forest in the Premier League on Saturday 14 January (3pm kick-off).
All times GMT.