Kanu, who netted the winner in Pompey's Wembley triumph over Cardiff City last May, bundled Nadir Belhadj's corner over the line after an uncharacteristic mistake by Bolton goalkeeper Jussi Jaaskelainen, who flapped at the Algerian's delivery.
The goal was harsh on Jaaskelainen, whose otherwise brilliant display looked like denying Portsmouth the win they desperately need to pull clear of the bottom three.
Glen Johnson signalled Pompey's intent in the 28th minute by bursting through the Bolton defence and unleashing a fiercely struck shot from just inside the penalty area, which Jaaskelainen did well to beat away.
Johnson was at the heart of the action throughout the first half and should have scored on the half-hour when he was played through one-on-one with Jaaskelainen after Niko Kranjcar has broken down the left only to shoot straight into the Finn's arms.
Bolton would have taken the lead against the run of play a minute later but for a brilliant diving save by Pompey goalkeeper David James as he kept out Johan Elmander's low strike.
Jaaskelainen thwarted Johnson again nine minutes before half-time with a magnificent fingertip stop as he turned the England defender's angled right-foot shot onto the post.
David Nugent almost gave Portsmouth the lead in first-half stoppage time when his curling long-range effort brushed the outside of Jaaskelainen's right-hand upright.
Portsmouth began the second half in the same vein they ended the first, with Younes Kaboul heading over from Sean Davis' corner.
There was a strange incident on the hour when the referee brandished a bizarre yellow card at Bolton substitute Nicky Hunt for getting too close to the pitch during his warm-up.
Portsmouth's survival hopes looked to have suffered a major blow on 77 minutes when Kranjcar was carried off on a stretcher after being left rolling in agony following a late tackle by Grant McCann.
But the Croatian's replacement, Belhadj, promptly set up the winning goal with his first touch.