Foxes fans can claim City were frustrated by dubious refereeing, but in truth it was once again an inability to convert chances into goals at home that proved their side's undoing.
City have now won just two top-flight games at the Walkers Stadium, the last at the beginning of November against fellow strugglers Blackburn Rovers.
Fulham had the better of the early exchanges with Luis Boa Morte setting up Steed Malbranque, whose long-range drive flashed just wide of Foxes keeper Ian Walker's near post.
City were infuriated on 16 minutes when referee Peter Walton failed to award a penalty after Muzzy Izzet was crudely upended inside the Fulham penalty area.
Steffen Freund then came to City's rescue at the other end when he bravely flung himself in front of Sylvain Legwinski's close-range drive.
Hard-working City began to peg back Fulham, but for all their possession they lacked the creativity to trouble Edwin Van der Sar and they had to wait until the 40th minute for their first clear chance when James Scowcroft failed to hit the target from ten yards following good work down the right by Marcus Bent.
Fulham had created few chances before the interval, but moments after the restart Matt Heath had to be alert in cutting out a dangerous cross from Boa Morte, with Legwinski hovering unmarked inside the box.
But City continued to press and almost unhinged Fulham on 53 minutes when Paul Dickov beat Zat Knight to an Izzet pass into the box and from a tight angle the Scottish International crashed a shot against the underside of the bar.
On the hour mark the referee again incurred the wrath of the home crowd when he blew for a foul when Izzet rolled the ball into an empty net after successfully challenging Van der Sar as the keeper attempted to clear.
And there was heartbreak for Leicester on 66 minutes when substitute John fired Fulham in front.
The 18-year-old Liberian had only been on the pitch for five minutes when he latched on to a Malbranque pass which caught the City defence flat footed and floated the ball over Walker and into the net from 20 yards.
Another Fulham substitute Brian McBride, almost doubled his side's advantage on 77 minutes and he waltzed through the City defence before Nikos Dabizas got in a goal saving tackle.
Leicester surged forward in search of an equaliser, but a hard working Fulham defence stood firm.
On 88 minutes the Londoners killed off Leicester with a classic breakaway goal when Boa Morte crossed from the left to the far post where an unmarked John sidefooted home from ten yards to seal victory.
The three points pushed Fulham up into the top half of the table and ensured that the push for a European place remains alive.
A disappointed Foxes boss Micky Adams said after the game: "Once we got into the groove in the second half we looked very dangerous and it looked as though there was only going to be one winner.
"Unfortunately it wasn't our day. I am down and disappointed as I am sure all of the players are, but it is my job to pick the team up when they are down.
"One thing that I was really pleased with was the effort and the commitment showed by the players.
"We had chances, but we didn't take them when they came along."Man of the Match: Collins John – came on just after the hour mark and made his mark by netting both goals for the visitors and getting off the mark in English football in the process.