The visitors were beaten by 139 runs and struggled against 19-year-old off spinner Amar Virdi who finished with four for 79.
Hampshire had looked destined for defeat on the final day but showed great determination.
It took Surrey until 4.46pm to wrap things up with Hampshire finally bowled out for 332 – after resuming their second innings on 116 for four.
Northeast led Hampshire’s resistance with an assured 129.
'Is proving one hell of a signing.... A real livewire' - Portsmouth match ratings from 2-0 win at Cheltenham
Portsmouth transfer news: Blues receive bids for former Luton and Millwall midfielder
Transfer gossip: Portsmouth eye raids for ex-Chelsea man and Charlton Athletic's former Wigan Athletic midfielder
Portsmouth boss Danny Cowley hails squad depth as tactical masterclass at Cheltenham pays off
Cheltenham 0-2 Portsmouth: Colby Bishop steals show as Blues prove too hot to handle in impressive display at sun-soaked Whaddon Road
He was joined in a spirited ninth-wicket partnership of 68 by Brad Wheal, with the fast bowler holding on stubbornly for 49 balls across 90 minutes before Jade Dernbach skidded one into the tailender’s pads with the fifth ball after tea to dismiss him for 10. It was the 17th leg before wicket of the game.
Hampshire’s number 11 Fidel Edwards also hung around determinedly, resisting for 41 minutes for his five not out.
There were 23.3 overs left when Northeast was last out, edging seamer Matt Dunn to see Ben Foakes, the Surrey wicketkeeper, dive to take a brilliant right-handed catch an inch from the turf.
Virdi made the initial breakthrough on the final morning, having Rilee Rossouw leg-before for 29 as he aimed a sweep following a 66-run stand for the fifth wicket with Northeast.
Hampshire lost their sixth wicket when Liam Dawson chopped on against fast bowler Jade Dernbach and, as lunch neared, Kyle Abbott’s brisk innings of 29 ended when he clipped Virdi to Rory Burns at short mid-on.
Abbott, who had got off the mark with a fortunate inside-edged four against Dernbach, then clubbed Virdi for six and had helped to add 43 with Northeast when he became Virdi’s fourth victim of the innings.
Chris Wood battled to 26 before Sam Curran, with the second new ball, pinned him leg-before 40 minutes after lunch but the unlikely Northeast-Wheal alliance then made sure the match went into its final session.
Virdi, who is not 20 until mid-July, was making just his fourth first-class appearance and only played in the game as a late replacement for 40-year-old former captain Gareth Batty, who suffered a back injury in the warm-ups on Friday.
With Ollie Pope, 20, scoring 145 on the third day and Curran, 19, snapping up a first innings four for 39 in Hampshire’s slide to 147 all out, this was an excellent match for the club’s youthful talent.
For Hampshire, who won their opening match against Worcestershire at the Ageas Bowl, this was a chastening four days – although Northeast’s performance is a significant consolation.
The former Kent captain faced 171 balls to complete his 20th first-class century, hitting 14 fours, and there were 19 boundaries overall in an heroic 254-ball effort across 346 defiant minutes.
Report by Mark Baldwin