Fryatt, a £1.2million signing from Leicester, stepped off the substitutes' bench on the hour mark and rifled home a trademark finish from 12 yards nine minutes later to give the visitors a 2-1 lead.
Hull, now unbeaten in eight away Championship matches, had opened the scoring through Jimmy Bullard's 21st-minute penalty after Cameron Stewart had been brought down.
Pompey deservedly drew level early in the second half through Liam Lawrence, who picked himself up to convert from the spot after being tripped by Hull defender Anthony Gerrard.
Hull, forced to defend doggedly for long periods, broke away again in the 69th minute and Fryatt put them back in front and grabbed a two-goal cushion through Nick Barmby in the 72nd minute.
Halford headed home with 14 minutes left, but Steve Cotterill's side could not force what would have been a deserved equaliser.
Debt-ridden Pompey, without midfield duo Michael Brown and Richard Hughes who both remain one appearance shy of automatic contract extensions, made the brighter start.
Striker David Nugent had miscued an early shot and headed over the crossbar before midfielder Lawrence's 20-yard free-kick rebounded back off the crossbar in the ninth minute.
Kanu directed a close-range header wide and Carl Dickinson flashed a shot from outside the area the wrong side of Hull goalkeeper Bradley Guzan's left-hand post.
But Hull earned themselves a penalty on a rare foray forward when Portsmouth defender Halford brought down winger Stewart in the area and Bullard placed a right-footed spot-kick beyond Pompey goalkeeper Jamie Ashdown in the 21st minute.
Pompey still created the better chances though. Lawrence's 25-yard shot was well held by Guzan, Nugent rifled a shot over the crossbar and then went close with a volley from outside the area.
Hull could not hold on to their lead for long after the restart. Lawrence charged clear into the Hull area and after he was tripped by Gerrard, the Pompey midfielder planted the subsequent penalty into the bottom corner.
But after spending most of the game on the back foot Hull regained the lead through new signing Fryatt.
Nolberto Solano played a fine ball into the area and Fryatt controlled the ball and turned to fire across Ashdown into the bottom corner.
The goal rocked Pompey, who had dominated for much of the game, and the home side soon found themselves two goals down when Barmby ran on to Bullard's astute pass and fired the ball into the same corner.
But Portsmouth refused to lie down. Substitute Joel Ward replaced Kanu in the 76th minute and moments later Halford headed home from Lawrence's cross into the centre of goal from six yards.
Pompey charged forward in the closing stages in a bid to salvage a point, but Hull held on for their fourth away league win of the season.