The Cottagers headed into the game on the back of defeats to Aston Villa, Swansea and Manchester United and had to be on their toes to see off the Canaries.
Fulham enjoyed the best possible start by netting after 107 seconds, Dempsey bundling home after John Ruddy parried a Bryan Ruiz shot into his path.
The United States international soon turned provider as the hosts doubled their advantage in the 13th minute, slotting through an exquisite ball for Duff to curl home.
With Fulham in the ascendancy it looked like the visitors could be on course for a thrashing similar to the one they received on their last trip to Craven Cottage, where Fulham’s 6-0 win on the final day of the 2004/05 season condemned the Canaries to relegation.
However, Norwich responded well and forced a nervy ending thanks to Aaron Wilbraham’s 77th-minute effort.
Fulham came into the match on a poor run of form, with Monday’s 1-0 defeat at Old Trafford equalling a club worst run of three goalless Premier League outings.
However, any fears that the streak would be extended against the Canaries were extinguished inside the opening two minutes.
Fulham broke forward as Ruiz latched onto a long ball, turned and saw a low drive saved by goalkeeper Ruddy, whose parry fell kindly for Dempsey to bundle home.
The American’s 10th goal in all competitions this year was followed up by a period of sustained Norwich pressure.
Paul Lambert’s side were enjoying the lion’s share of possession but went further behind in the 13th minute.
Again the Canaries were caught out by a quick surge forward as Dempsey slotted the ball through to Duff, who curled home a left-footed effort from inside the box.
Mousa Dembele had a shot deflected as Fulham pushed for a third, before Dempsey twice saw headers go awry.
Elliott Ward picked up the game’s first booking for a challenge on Ruiz in the midst of the Cottagers’ dominance and there were calls from the home faithful for the centre-back’s dismissal after he was adjudged to have taken down Pavel Pogrebnyak minutes later.
The Russia international looked to have picked up a knock in the clash and was replaced in the 35th minute by debutant Alex Kacaniklic.
While struggling to control the match, Norwich were still looking dangerous in flashes and Jonny Howson wasted a gilt-edged chance to reduce the deficit by firing across the face of goal.
However, only the goal frame and a last-ditch debutant Ryan Bennett block prevented Fulham taking an unassailable lead on the stroke of half-time as Dempsey hit the post from an acute angle and Dembele saw his follow-up deflected behind.
Seeing his side were lacking an end product, Norwich boss Lambert brought on striker Simeon Jackson in place of defender Zak Whitbread for the second period.
The alteration saw the visitors switch to a 3-5-2 formation, although that gave Kacaniklic a free reign down the left flank in the early stages.
The 20-year-old was impressing on his Fulham debut and was unfortunate to see a superb right-footed curled effort tipped onto the crossbar by Ruddy four minutes after the restart.
Norwich tightened up soon after and attacked with renewed vigour, with Mark Schwarzer doing well to stop a Wes Hoolahan drive before Aaron Hughes brilliantly blocked Andrew Surman.
Russell Martin headed straight at Schwarzer from the resulting corner, before David Fox collected a booking for scything down Dembele.
Surman saw a 25-yard free-kick deflect wide as the Canaries continued to press, before Stephen Kelly burst through at the other end and was only thwarted by Bennett’s late sliding tackle.
The chance began a change in momentum in the home side’s favour, with Kacaniklic, Hughes and John Arne Riise all going close.
While the Whites were looking comfortable, they – like so many times before this season – switched off in the final 15 minutes.
Moments after substitute Wilbraham inexplicably shot wide, he made amends by reducing the deficit 13 minutes from time as his effort deflected in off Hughes.
As Fulham began to rock, Norwich threw bodies forward and only last-gasp defending prevented Lambert’s side finding another goal.
Schwarzer and his defence were being tested by the visitors, with Dickson Etuhu booked shortly after coming on against his former club.
Wilbraham and Kyle Naughton had efforts as the game came to a close, but the west Londoners held out.