Aleksandar Mitrovic's 12th goal of the season clinched Fulham a 1-0 win at Birmingham.
The Serbia striker, who earlier had an effort disallowed for offside, hooked home in the 52nd minute after Birmingham goalkeeper Lee Camp dropped substitute Cyrus Christie's cross.
Fulham had to withstand heavy pressure from the hosts in the latter stages but goalkeeper Marek Rodak made a superb save from striker Lukas Jutkiewicz's point-blank header while Maxime Colin had an effort blocked.
The visitors could have made it 2-0 at the death but substitute Aboubakar Kamara's shot hit the inside of a post on the break.
Birmingham's only change saw on-loan Chelsea centre back Jake Clarke-Salter replace captain Harlee Dean, who started his three-match ban for his red card in the 4-2 defeat at Cardiff last week.
New striker Jeremie Bela, who left Spanish side Albacete to join the Blues, made his debut as a 62nd-minute substitute after receiving international clearance.
Fulham made three changes from their 3-0 defeat at Hull. Manager Scott Parker recalled Rodak, Maxime Le Marchand and Anthony Knockaert for Marcus Bettinelli, Joe Bryan and Tom Cairney.
Le Marchand, though, lasted just 35 minutes before he limped off following a challenge on Jutkewicz.
The Blues went close when left-back Kristian Pedersen, who had scored in his previous two games, unleashed a fierce angled drive which was tipped wide by Rodak.
Fulham thought they had broken the deadlock in the 14th minute. Mitrovic bundled the ball home after Camp dropped Bobby Reid's shot when Knockaert crossed, but the linesman's flag immediately went up for offside.
The Blues hit back strongly and Kerim Mrabti's first-time effort was smothered by Rodak before the Fulham keeper made a superb reflex save to his right from Fran Villalba's flick following a cross.
The home side had a let-off in the 26th minute. Jude Bellingham gave the ball away in midfield and Fulham swept forwards, Knockaert crossing for Reid, who just missed when sliding in from point-blank range.
There was a flashpoint off the ball in the third minute of first-half stoppage time after Knockaert landed on Bellingham, apparently splitting the Birmingham midfielder's lip.
Mitrovic and Bellingham then shared a heated exchange and players from both sides became involved before Bellingham and Mitrovic were booked.
Fulham threatened when Reid's snapshot was smothered by Camp after Mitrovic won Colin's headed clearance.
Mitrovic remained centre stage as he gave Fulham the lead in controversial fashion.
The Serbia international, making his 150th league start, tapped home after Camp dropped Christie's cross under pressure.
The Cottagers looked to double their lead and Knockaert's chip dropped not far over the bar, before Ivan Cavaleiro drove wide.
The Blues finally forced another save from Rodak in the 80th minute when Jutkiewicz's header from point-blank range was tipped over by the Fulham keeper.
What the managers said...
Birmingham's Pep Clotet: "We had 16 shots, they had 10, we had four shots on target, they had three and from these three, two were valid, because I think the goal is a blatant foul on Marc Roberts. Mitrovic never wanted to head that cross - he thought the keeper was going to catch it and he just bashes against Marc Roberts who had the position won.
"Roberts was sent three yards outside then the ball dropped to Mitrovic, who was in that position thanks to a foul, so it's a clear foul. But those are margins. We had very clear chances as well that we should have scored. I thought we had everything there to have secured points, if not three then one."
Fulham's Scott Parker: "He looks like an absolute animal, chasing things down, and if that is the base, the goals will come. That's what we want from him; he is the talisman, the guy everyone looks to and the pressure is on him. He needs to understand what he gives to the team.
"For all his goals, for everything that goes round him, all I ask of him is forget the goals, just go and turn up and be the Mitrovic he can be."