Lomana LuaLua's 89th-minute penalty broke Watford hearts and gave Portsmouth victory at Fratton Park.
Jay DeMerit celebrates his goal as David James rues his mistake
The visitors took a shock 32nd-minute lead when Jay DeMerit powered home a header from Ashley Young's cross.
But Pompey equalised when the prolific Kanu found the net from close range for his eighth goal of the season.
The Hornets, without an away win in the league, still looked poised to claim a valuable point until DeMerit fouled Kanu in the box in the dying minutes.
Portsmouth made two changes to the side that drew 1-1 with Fulham last time out as they looked to make up ground near the top of the table.
Both came in midfield, with David Thompson replacing the injured Gary O'Neil and Nico Kranjkar coming in for Matthew Taylor.
Watford also made a couple of switches as they looked to bounce back from their 4-0 hammering by Chelsea.
Malky Mackay replaced Danny Shittu in defence while Matthew Spring took over from Damien Francis in midfield.
606 DEBATE: Give your thoughts on the match
It was Mackay who had the first real chance of the game inside the opening 60 seconds.
The 34-year-old Scot pounced on some poor defending from the home side only to hook his shot over the bar.
Pompey were quick to show their attacking instincts, too.
Moments after Mackay's chance, Thompson fired in a low free-kick which Ben Foster, diving to his right, scrambled to safety.
The visitors had claims for a penalty turned down with 26 minutes gone after David James had made a hash of a cross from the left.
Dejan Stefanovic rises above Malky Mackay to get his head to the ball
The ball appeared to strike the left hand of Linvoy Primus as he tried to work the ball clear, but referee Chris Foy saw nothing untoward.
Any feelings of ill-justice Watford may have felt about that decision were soon forgotten six minutes later when they took a surprise lead.
From a corner on the right, DeMerit powered home a header from the edge of the six-yard box after Pompey goalkeeper James had come for a ball he was never going to get.
Replays later showed the corner should never have been given, but that was hardly the reason for such poor marking from the home side.
Sol Campbell wasted a chance to pull Portsmouth level but Kanu ensured the home side went in all square at the break with a clever finish on 44 minutes.
His first shot from Thompson's right-wing cross was saved by Foster, but the ball eventually found its way back to the tall Nigerian, who scooped the ball into the net from close range.
Foster failed to make it out for the second half because of a leg injury, handing Richard Lee his third Premiership appearance of the season.
But the 24-year-old goalkeeper was rarely tested until LuaLua beat him from the spot after Kanu had been pulled back by DeMerit.
Watford felt especially aggrieved with the decision, after having had a second penalty claim turned down by that point when Darius Henderson looked as though he was pushed inside the box as he went for a cross.
Portsmouth manager Harry Redknapp:
"I knew it would be tough against Watford. They play a different kind of game.
"They are difficult to play against. They are a threat from every throw-in, every corner and they knock lots of stuff into the box. They are direct and it is difficult to get into the game. They do what they do very well.
"Aidy Boothroyd has a system that gets the best out of them and they will make it hard for a lot of teams. Some of our players said they had never played against a team like that before."
Watford boss Aidy Boothroyd:
"Referees who get decisions wrong should be demoted. Why should us poor managers have to put up with this?
"I've said my piece to the ref and I want to say it to the people who count. Kanu was offside when he was fouled and we should have had two penalties."
Portsmouth: James, Pamarot, Primus, Campbell, Stefanovic, Thompson (Cole 63), Davis, Pedro Mendes, Kranjcar, Kanu, LuaLua.
Subs Not Used: Kiely, O'Brien, Fernandes, Koroman.
Goals: Kanu 44, LuaLua 89 pen.
Watford: Foster (Lee 46), Doyley, Mackay, DeMerit, Stewart, Smith, Spring, Mahon, Bouazza (Priskin 34), Henderson (Chambers 78), Young.
Subs Not Used: Shittu, Bangura.
Booked: Stewart, DeMerit, Priskin.
Goals: DeMerit 32.
Ref: C Foy (Merseyside).