Inverness, who had not won a league game since beating Hibernian at Tulloch Caledonian Stadium 4-2 on November 20 last year, claimed only their third success at home this season.
Tokely’s powerful header from five yards out put Caley Thistle ahead in the 28th minute and Duncan sealed the victory with a tap-in after 62 minutes.
St Johnstone could have leapfrogged their hosts into the top six had they capitalised on Inverness’s poor home form, but they could not despite Caley Thistle’s injury problems.
Influential midfielder Jonny Hayes missed out for the Highlanders due to a foot injury, while defender Chris Innes was replaced by Tokely who returned from suspension after missing last Saturday’s 3-3 draw at St Mirren.
Inverness manager Terry Butcher also gave a rare start to Shane Sutherland.
Derek McInnes made two changes to his St Johnstone starting line-up which beat Partick Thistle 2-0 in the Scottish Cup on Wednesday with Liam Craig and Sam Parkin replacing Cleveland Taylor and Collin Samuel.
Supporters enjoyed the unseasonal warm sunshine in Inverness more than the uninspiring contest in front of them for much of the first half.
Chris Millar came closest in the opening stages with a dipping volley in the 10th minute.
The winger’s 25-yard effort was inches over the bar after he was found by Sam Parkin.
Caley Thistle responded with Aaron Doran dragging a low shot from a similar distance just wide.
Moments later Ryan Esson was forced into the first save of the match when he blocked Stevie May’s low shot from the edge of the box.
The hosts’ only on-target effort of the first period proved fruitful with Tokely scoring with a powerful header after connecting with a Doran corner in the 28 minute.
Lithuanian under-21 international Arvydas Novikovas was introduced after 40 minutes for Millar.
The on-loan winger from Hearts appeared to be a tactical switch as the Saints tried to create something from a contest that was turning into a midfield battle.
Inverness’s injury woes continued after the restart with David Proctor adding to the growing list.
The defender came off second best from a fair challenge five minutes after the interval but could not return to action.
Proctor, who was replaced by Innes, is now Caley Thistle’s 10th injured player.
Despite their woes, Doran might have doubled the lead when he flashed a volley over after being found by a Tokely flick-on from a Duncan free-kick.
Duncan made a telling impact in the 62nd minute when he netted at the near post.
The midfielder met a perfect cutback from striker Adam Rooney to add the hosts’ second.
Murray Davidson might have pulled a goal back for the visitors with 15 minutes to go but he squandered an excellent chance.
The midfielder had a free header which he nodded over from a Danny Grainger corner.
Saints’ captain Jody Morris and Davidson linked up well moments later with the latter firing over seconds before Novikovas forced a diving save from Esson.
The missed chances were in complete contrast to the clinical finishing of Caley Thistle who netted their only two shots on target.