The game of the day in League Two looked to be going Northampton's way when Cresswell put them in front after 17 minutes but Pompey delighted their large away following when Evans equalised to send the sides in level at half-time.
Both teams had chances to win the game in a tense second half but Conor Chaplin decided things in favour of the visitors with five minutes remaining.
5,859 watched the action with the Cobblers dropping to second in the table after Plymouth Argyle's win at Hartlepool.
Speaking to the official club website after the game, manager Chris Wilder said: "We’ve lost a game of football in front of a capacity crowd and that’s disappointing.
"We should have taken a point today but we haven’t and we move on."