Fulham 3 Portsmouth 1
Tony Adams' side have won just one of their last 11 matches and taken one point from their last seven games, and appear destined to be involved in a battle to avoid the drop just a year after winning the FA Cup.
But Fulham will be satisfied to have got their campaign back on track as they won in the league for the first time in 2009 as they moved back into the top half of the table.
And in a tight game of few chances it was two calm finishes from their strikers that made the difference for Roy Hodgson's side, although it could have been so different if Alan Wiley had awarded Portsmouth a certain penalty for a foul by John Paintsil on David Nugent with the score at 1-0.
The day had started well enough for the hosts as they paraded Giles Barnes on the pitch before the game, the Derby man having joined on loan as a replacement for Jimmy Bullard, who was sold to Hull last week.
And Fulham could not have wished for a better start as they hit the front just 15 minutes in.
Portsmouth captain Sylvain Distin was the man at fault as he stood three yards behind his fellow defenders, allowing Johnson to race clear onto Clint Dempsey's throughball and slide his shot past David James for his eighth of the season.
Portsmouth began to come into the game as the half progressed, and the visitors came within inches of getting back on level terms five minutes before the break when Younes Kaboul smashed a header against the bar from Jermaine Pennant's corner.
Adams made his move at half-time, bringing on Nugent for Kanu, and it should have paid dividends just five minutes after the break as the visitors were denied a cast-iron penalty.
It appeared obvious to everyone inside Craven Cottage that Paintsil had brought down the striker, but Wiley somehow decided the tackle was legitimate.
The away fans abused the referee, and their Fulham counterparts vented their anger at the shot-shy Bobby Zamora, who was replaced by Nevland with an hour gone - and the replacement immediately made the game safe, running through the Portsmouth defence and delicately curling the ball past James with the outside of his foot and into the far corner.
And he grabbed his second with time running out as he swivelled and scored from 12 yards, before Portsmouth grabbed a consolation through Nugent, who was left unmarked to meet Pennant's free-kick.
But that strike counted for little, and Adams must be fearing for his job, having taken just 11 points from his 15 league games in charge.