Duff netted his first league goal for almost a year to settle a tight affair and propel the in-form Cottagers to 12th in the table, one point behind their opponents.
It was another night to forget for Newcastle, who lost Shola Ameobi to a suspected fractured cheekbone just 13 minutes in, less than 48 hours after selling star striker Andy Carroll to Liverpool.
Manager Alan Pardew, who hoped an unchanged line-up would prove it was business as usual at St James' Park, would have been without the injured Carroll tonight even had he stayed.
Newcastle could ill afford to lose another forward but that was exactly what happened when Ameobi took an elbow to the head in a challenge with Steve Sidwell after just 10 minutes.
Three minutes of futile treatment followed before Ameobi was led down the tunnel and replaced by Nile Ranger.
The visitors had shown total commitment to that point, with Mike Williamson closely shadowing the in-form Moussa Dembele.
Duff's deflected shot and a weak Danny Simpson strike at the other end were the only efforts of note in the opening quarter, although Sidwell arguably saved a goal by flicking Joey Barton's free-kick behind.
Danny Murphy went close to sending Clint Dempsey clean through but Steve Harper was too quick off his line, while the goalkeeper also snaffled Sidwell's harmless long-ranger.
Newcastle's discipline began to waver and Simpson was booked just past the half-hour mark for hauling back the increasingly influential Dempsey, who also drilled narrowly wide from close range as Newcastle failed to deal with a Murphy free-kick.
Newcastle were briefly down to 10 men again before half-time thanks to another head injury, this time to Simpson.
Williamson produced a great block to deny Duff an early second-half opener but the winger should then have put Fulham ahead in the 50th minute when he prodded wide from barely three yards after Dempsey's shot was saved by Harper and deflected straight to the winger.
Captain Kevin Nolan was booked for a rash tackle on Dembele but the visitors were starting to get a foothold in the game.
Leon Best nodded Danny Guthrie's cross off target and the recalled Chris Baird sent Jonas Gutierrez's wicked cross just the right side of his own post.
Williamson made a near-fatal error just past the hour when he gifted the ball to Duff and Dempsey unleashed a rising near-post drive which was tipped over by Harper.
More suicidal defending ultimately cost them in the 67th minute when Jose Enrique was too easily beaten by Duff to Murphy's 60-yard ball and the Irishman kept his cool to strike right-footed past Harper.
Fulham boss Mark Hughes handed on-loan Chelsea winger Gael Kakuta his debut with 19 minutes remaining as Andy Johnson was withdrawn, while Newcastle threw on Peter Lovenkrands for Best.
Baird's free-kick grasscutter was too close to Harper before the Fulham fans began to chant: "There's only one Andy Carroll."
Kakuta should have killed the game 10 minutes from time when he sidefooted Dembele's cross straight at Harper.
And he was almost made to pay seconds later when Ranger forced Mark Schwarzer - a surprise starter four days after the end of Australia's Asian Cup campaign - into a brilliant point-blank smother from Nolan's cutback.
The chances kept coming and Dempsey shot too close to Harper and Kakuta saw his finish blocked after a brilliant, sweeping move.
Fulham ran down time by removing Murphy and Duff for Zoltan Gera and Simon Davies but they also went closest to another goal, with Dembele prodding too close to Harper.
Teams:
Fulham Schwarzer, Pantsil, Hughes, Hangeland, Baird, Dempsey, Sidwell, Murphy (Gera 87), Duff (Davies 87), Andrew Johnson (Kakuta 71), Dembele.
Subs Not Used: Stockdale, Salcido, Kamara, Greening.
Goals: Duff 67.
Newcastle Harper, Simpson, Williamson, Coloccini, Jose Enrique, Barton, Nolan, Guthrie, Gutierrez, Best (Lovenkrands 72), Ameobi (Ranger 13).
Subs Not Used: Krul, Campbell, Perch, Ferguson, Richardson.
Booked: Simpson, Guthrie, Nolan.
Att: 25,620
Ref: Mike Jones (Cheshire).