Pompey’s long unbeaten run finally came to an end as Ricky Holmes came back to haunt his former club.
He netted a fine first half finish, with the hosts surviving a late onslaught to secure all three points.
There was one bright note for the Blues, however, as Wes Fogden made his long-awaited comeback from the bench.
But Ben Chorley was then sent off in stoppage-time to ensure the night ended in disappointment.
Andy Awford stuck with the same side that drew at home to Oxford on Saturday.
That meant Nigel Atangana continued to deputise for the suspended James Dunne, while Jack Whatmough once again missed out through injury.
The hosts named former Pompey winger Holmes in their line-up, while fit-again League Two top scorer Marc Richards was on the bench.
After a slow start it was the hosts who were first to threaten when Holmes laid the ball off for Ivan Toney to fire straight at Paul Jones.
Pompey carved out a decent opening of their own on nine minutes, but Jed Wallace’s cross was just behind Ryan Taylor and Matt Duke was able to save.
Josh Passley was being left in acres of space down the right and his cross was diverted behind by Evan Horwood.
The resulting corner was only partially cleared and when the ball was sent back into the box, Danny Hollands met it with an ambitious over-head effort that flew into the side netting.
Another set-piece was delivered into the Northampton area on 20 minutes and skipper Chorley, charging in at the far post, headed narrowly over.
But it was the hosts who broke the deadlock midway through the first half, with Holmes the man on target.
He was afforded time to cut in onto his left foot and curl a fine strike past Jones’ desperate dive and into the bottom corner.
The goal stunned Pompey, who struggled to keep possession as Northampton tried to apply more pressure.
Toney went close to doubling the advantage on 37 minutes when he turned sharply and saw his shot deflected inches past the post.
But the Blues recovered and almost grabbed an equaliser before the break after the Cobblers failed to clear their lines.
The ball fell for Matt Tubbs a few yards out and his fierce volley was well saved by Duke at point-blank range.
Half Time: Northampton 1 Pompey 0
The hosts came close to adding to their lead early in the second half, with Paul Robinson making a well-timed challenge to deny Toney.
And they soon brought on the prolific Richards in place of Lawson D’Ath to boost their striking options.
Awford responded with an attacking double switch of his own on 58 minutes as Atangana and Passley made way for Andy Barcham and Craig Westcarr.
But it was the hosts who were next to have a chance when Holmes drilled a shot wide from long-range on 67 minutes,
Pompey had a chance to level moment later, though, with Duke unconvincingly clawing the ball clear after Robinson had met Dan Butler’s corner.
They then almost handed Northampton a second goal following a poor back-pass from Robinson.
Jones tried to clear it, but Darren Carter stole possession and curled a shot goalwards, with Robinson recovering well to head clear.
There was a welcome sight on 78 minutes as Fogden – who has been out of action since damaging knee ligaments in pre-season – came on for the closing stages in place of Butler.
And he made an instant impact, starting a fine passing move and ending it by sliding in and diverting Wallace’s cross narrowly over.
Tubbs was next to go close when he controlled Wallace’s pass and fired in a low shot that Duke did well to hold low to his right.
Pompey were pouring forward at every opportunity and Ryan Cresswell had to head off the line after Tubbs met another Wallace cross on 86 minutes.
And the Cobblers were able to see out four minutes of stoppage-time to ensure their own impressive run continued, while a second booking for Chorley for a foul on Brendon Moloney compounded the Blues’ misery.
Northampton (4-4-2): Duke; Moloney, Cresswell, Collins (c), Horwood; Hackett (Clifton 67), Taylor, Byrom, Holmes (Newey 83); Toney, D’Ath (Richards 55)
Goals: Holmes 25
Booked: Byrom, Cresswell, Horwood, Taylor
Subs not used: Jalal, Diamond, Carter, Bodin
Pompey (3-5-2): Jones; Devera, Robinson, Chorley (c); Passley (Westcarr 58), Atangana (Barcham 58), Wallace, Hollands, Butler (Fogden 78); Tubbs, Taylor
Sent off: Chorley (two yellow cards)
Subs not used: Poke, Webster, Ertl, Chaplin
Referee: Kevin Johnson
Attendance: 4,871 (798 Pompey fans)