Fulham were denied a share of spoils as Bristol City left Craven Cottage with all three points when referee Jeremy Simpson failed to award what appeared a stonewall penalty in stoppage time. Scott Parker’s side might have pinched a point having handed the visitors a two-goal lead, but were left to reflect on might have been as the officials left the pitch to a cacophony of boos.

Parker might also pause to consider his own team selection after his decision to retain Josh Onomah behind Aleksandar Mitrovic and leave Aboubakar Kamara on the bench left Fulham looking toothless in attack for the majority of the match. Only once Kamara was summoned from the bench did the home side seriously look like breaching Bristol City’s well-drilled defence – and the Frenchman’s 86th minute close range finish set up a frantic finale.

Simpson, who had long since lost control of a contest that previously been played in a good spirit, somehow waved play on when substitute Neeskens Kebano was felled in the box by Callum O’Dowda. There was no booking for simulation for the Congolese winger, but a card followed for captain Tom Cairney who led a swarm of Fulham protests. Just to prove it wasn’t going to be Fulham’s day, Kebano rattled the crossbar with a looping header in the fourth minute of added time.

Lee Johnson’s men underlined their own play-off credentials with a fifth consecutive win at Craven Cottage. City were patient in possession and able to soak up an early spell of Fulham pressure, with the recalled Anthony Knockaert scooping a dangerous cross from former Robin Joe Bryan over the bar from six yards out. Stefan Johansen than steered a pass over the City defence to free Ivan Caveleiro and, although the winger’s shot squeezed past David Bentley, Jack Hunt was able to clear from underneath his own crossbar.

City looked potent enough going forward themselves. They created early jitters in the Fulham defence with a frenetic high pass and began to prey on those nerves. Famara Diedhiou perhaps should have put the away side by converting Niclas Eliasson’s cross, but directed his header straight at Marek Rodak, who was alert enough to prevent Andreas Weimann from snaffling up the rebound.

Fulham didn’t heed the warning, however, and were behind following Bristol City’s next attack. Eliasson was the provider again – with a floated ball from the left this time after Denis Odoi could only half clear – and this time Josh Brownhill darted between the home centre backs to head home. City were content to sit deep and let Fulham have plenty of possession and, whilst they threatened to double their lead on the break, the closest Parker’s men came to an equaliser before half time was a wild shot from Odoi that flew high into the Putney End.

Knockaert squandered a glorious chance to level matters a minute after the interval. Cavaleiro weighted a lovely ball in between the Bristol City defence to send the Frenchman in on goal, but Knockaert dithered as Bentley advanced and the former Brentford goalkeeper was equal to his eventual side-footed effort. Five minutes later and Mitrovic spurned a fine opening as well – sending a free header over the crossbar from Bryan’s beautifully floated cross.

Fulham were gradually beginning to turn the screw. Mitrovic, so well marshalled by the Bristol City defenders in the first half, brought down a through ball by Johansen and drove towards the penalty area before shooting over as red shirts converged on him. He almost got on the end of a gorgeous cross from Knockaert but the ball had a touch too much pace on it as the Serb slide in at the back post. Bentley was equal to a trademark Cairney curler from the edge box – but the visitors were now being penned back in their own half.

Just as Fulham looked likely to grab an equaliser, they conceded a critical second. A slick move down the right unlocked the home defence. Brownhill’s deft backheel released Adam Nagy, who strode away from Tim Ream, and delivered a low cross from the byline that was tapped home by Diedhou, who had been left completely unattended at the back post.

There seemed scant hope of a Fulham fightback, especially when Johansen had a goal disallowed for a push by Mitrovic at the near post. But Fulham kept plugging away and Kamara was quickest to react, giving them a lifeline after Bentley had made an excellent save from Kebano. The five minutes of added time contained no end of drama, as Simpson waved yellow cards often like confetti both before and after Fulham’s penalty shout.

Kebano, who had already frightened the visitors during an impressive cameo, had little reason to go down as he sought an equaliser, but he was clearly clipped by O’Dowda. Simpson immediately waved away the appeals, which brought a prolonged period of protests from the Fulham players. Kebano’s fury was only increased moments later when his header from a fine Cyrus Christie cross came back off the crossbar with Bentley beaten.

FULHAM (4-2-3-1): Rodak; Odoi (Christie 87), Bryan, Mawson, Ream; Johansen, Cairney; Knockaert, Cavaleiro (Kebano 82), Onomah (Kamara 68), Mitrovic. Subs (not used): Bettinelli, S. Sessegnon, O’Riley, de la Torre.

BOOKED: Odoi, Knockaert, Cairney, Johansen, Rodak, Mawson.

GOAL: Kamara (86).

BRISTOL CITY (4-3-3): Bentley; Hunt (Moore 90), Rowe, Williams, Baker; Brownhill, Massengo, Nagy (Smith 87); Weimann, Eliasson (O’Dowda 78), Diedhou. Subs (not used): Mäenpää, Pereira, Palmer, Semenyo.

BOOKED: Eliasson, Hunt.

GOALS: Brownhill (26), Diedhou (76).

REFEREE: Jeremy Simpson (Lancashire).

ATTENDANCE: 18,779.