David Button: Made a couple of good reaction saves but this was another nervy performance from the Fulham goalkeeper, especially with the ball at his feet, where his iffy distribution didn’t exactly radiate confidence. Button’s kicking started to invite pressure as the second half went on and, as Millwall threw on forwards to try and force their way back into the contest, he looked increasingly uncomfortable coming off his line. 6

Ryan Fredericks: As ever, the full-back flew down the right to give Fulham another option in the final third. His crossing was very hit and miss, however, and diligent opponents who do their homework, will know that the low cross to the near post remains his most likely delivery. Was sound defensively and remains one of the Whites’ most consistent performers – even if this wasn’t his best display. 6

Ryan Sessegnon: Switched to left back after Tim Ream failed his fitness assessment, Sessegnon didn’t really get forward as much as he has done previously from full-back until the second half. The 17 year-old waged a running battle with Fred Onyedinma, which he eventually won when Neil Harris withdrew his right winger, and bombed on much more in the second period. 7

Tomas Kalas: Probably the Czech defender’s most commanding display for a little while. He was composed and a frequent winner of the ball in the air against Tom Elliott, shrugging off a sly elbow to the head from the Millwall striker which went unpunished by the officials. He made critical clearing headers time and time again and seemed to relish the responsibility of winning the key aerial duels. 7

Denis Odoi: There were times this afternoon where it was obvious that the Belgian was a makeshift centre back. He battled hard but had little chance against either Elliott or Morison in the air – and switched off at vital times, such as when the former drifted between him and Kalas, gaining the half a yard necessary to be able to plant a free header against the post. One sliced clearance and a complete miskick were very nearly punished in the second half. 6

Oliver Norwood: Assured as ever at the base of the Fulham midfield, where he covered plenty of ground in the absence of Kevin McDonald. Dictated the pace of the game from a deeper position well, but still played a number of key forward passes that opened up a packed Lions defence. Tucked away the penalty with aplomb in first half stoppage time. 7

Stefan Johansen: Not the Norwegian’s finest forty five minutes and you wonder whether he was fully recovered from both the illness and fitness issues that have disrupted his recent participation in the first team. He didn’t win a single tackle and misplaced a number of passes before Aboubakar Kamara replaced him after the interval. 5

Tom Cairney: Encouraging to see the skipper get another full game under his belt so soon after his superhuman effort at Sheffield United on Tuesday. He drove right at the Millwall midfield and defence with real intent – as well as dropping back into deeper positions to collect the ball off the back four. Linked the play nicely with Norwood and Sessegnon and came to the fore later in the contest when, with the visitors penning Fulham back, he often sprinted deep into the Millwall half to give his back four a break. 7

Sheyi Ojo: The Liverpool loanee was a livewire from the first whistle and it would be harsh to unfavourably compare this display against his sensational return to the starting line-up at Sheffield United. He swapped wings effectively with Kebano and was confident enough to try long-range strikes from early on. Ojo was keen to get on the ball and effect proceedings but couldn’t find the telling touch to beat Jordan Archer, which he should have done from close range when Sessegnon’s flick laid on a glorious chance in the second half. 7

Neeskens Kebano: A frustrating afternoon for the Congolese winger, who got into a number of promising positions but failed to find make a telling contribution. Unlucky not to score on a couple of occasions early on, with ex-Fulham centre back Shaun Hutchinson making a couple of last-ditch interventions, but struggled to make an impact in the second half. Wasn’t overly surprising to see him replaced as the game headed into a nervy final quarter. 6

Rui Fonte: You couldn’t fault Fonte’s effort against Millwall’s imposing centre backs but he got very little service as he played on the shoulder of the Lions’ last man. Came deeper to link the play effectively and crucially won the decisive penalty, when he was pulled down by Conor McLaughlin – even if Harris vehemently disagreed with Paul Tierney’s decision. Struggled to impose himself in the second period when he was shifted to the number ten role after Kamara came on. 6

Substitutes

Aboubakar Kamara (on for Stefan Johansen, 45): Immediately posed a different problem for Hutchinson and Jake Cooper when he arrived after the interval. It’s clear that he has much more confidence after making regular appearances in the Championship and stretched the game with his pace, which he used to hassle the Millwall back line and Jordan Archer. Despite his willing running and movement, Kamara struggled to gain a clear sight of goal, with a prodigious leap at the back post that saw him head Norwood’s cross into the side netting from an acute angle. 7

Tayo Edun (on for Rui Fonte, 58): Another accomplished display from the England youth international, who slotted into the midfield and immediately made it more difficult for Millwall to play through the home side. He played a number of defence-splitting passes early on, including one lovely link-up with Sessegnon, which gave his academy colleague a glorious opportunity to cross. It became much more difficult as the Lions floated high ball after high ball into the Fulham box, but Edun will learn an awful lot from this assignment. 6

Marcelo Djalo (on for Neeskens Kebano, 78): Brought on to provide defensive solidity as Jokanovic went to match Millwall’s strikers with three centre backs but the Spaniard’s physical approach to defending conceded a number of dangerous free-kicks that Fulham could ill-afford. Made a couple of vital headed clearances as the hosts just about hung on. 6