Victory takes Celtic to within three points of Rangers at the top of the Scottish Premiership with a game in hand.
In a match rescheduled because Celtic left-back Boli Bolingoli broke quarantine restrictions after a trip to Spain, the host who\took a shock lead on three minutes when Lee Erwin prodded home from a corner.
Duffy would not have been available had the game gone ahead in August as planned and the Irish defender is already becoming an important weapon for Neil Lennon's team as he powered home Ryan Christie's free-kick to level.
Christie was the creator again for Celtic's second as the more diminutive James Forrest nodded in a rare headed goal nine minutes before half-time.
Celtic had almost complete control thereafter, but failed to build on the lead, most notably when Zdenek Zlamal saved a penalty from Odsonne Edouard 15 minutes from time.
Zlamal was making what could be his final appearance for the Buddies on an emergency loan from Hearts after two of St Mirren's goalkeepers tested positive for coronavirus and the other was put into self-isolation after coming into contact with his teammates.
The Czech continued to keep Celtic at bay with further saves from Albian Ajeti and Christie, but it was to no avail as the Hoops collected all three points.