The Bulgarian set up strike partner Yakubu Ayegbeni for Portsmouth's opener 11 minutes into the second half before scoring himself on 59 and 72 minutes as Pompey edged a step closer to a place in the Premiership.
Norwich, chasing a first win in four games, had the better of an uninspiring first half with Leigh Bromby and Mark Rivers both forcing good saves from Portsmouth goalkeeper Shaka Hislop.
But Pompey showed more attacking intent in the second period and deservedly went in front when the speedy Yakubu slotted home his sixth goal in seven starts.
The Nigerian, on loan from Israeli champions Maccabi Haifa until the end of the season, raced on to Todorov's pin-point through ball before coolly chipping Robert Green from six yards out.
Clint Easton made it 1-1 with the second of four goals in six frantic second-half minutes less than 60 seconds after the opener.
Winger Easton ran the ball past Pompey goalkeeper Hislop from the edge of the six-yard box after Rivers had crossed from the right.
Todorov put Pompey back in front on the hour when he bundled the ball under Green after trading passes with Yakubu midway inside the Norwich 18-yard box.
But the Canaries drew level for a second time just three minutes later when man of the match Rivers rifled home from 12 yards.
Rivers neatly curled the ball past Hislop after midfielder Zema Abbey's cross had been only half cleared by Pompey defender Linvoy Primus.
But just as Norwich seemed to be heading for a share of the spoils, Todorov popped up to seize on a mistake by goalkeeper Green and put Pompey in front for a third and final time 18 minutes from the end.
Todorov expertly hooked home from close range after the luckless Green had punched a Paul Merson corner straight into his path.