A John Akinde penalty in the 40th minute was enough to seal victory for Barnet, in a fiercely contested match at The Hive.
The Bees’ top scorer was tripped in the box, before calmly converting the spot kick to give Barnet the advantage.
Martin Allen’s men defended doggedly throughout the second half, to cling on to a valuable three points against play-off chasing opposition.
In a first half of few chances, Sam Muggleton’s right-sided corner almost crept over the goal line on 19 minutes.
Mathew Stevens attempted a bicycle kick five minute later, but his shot trickled wide of the right post.
Curtis Weston’s attempt from distance was easily saved on the half hour mark, before Jamie Stephens stopped Kal Naismith’s speculative 40 yard effort for the visitors.
In the 38th minute Ryan Fulton turned Mark Randall’s long-range drive around the post to keep the scores level.
But the Bees took the lead when Akinde was fouled in the box five minutes before the break.
The striker calmly rolled the resulting penalty into the bottom right corner, to give the Bees the lead at half time.
Portsmouth had the first chance of the second period – Stephens acrobatically tipping Adam McGurk’s 49th minute header over the crossbar.
McGurk’s low cross was then fired over the bar by Enda Stevens on 61 minutes.
A left sided free kick from Naismith was headed straight at Stephens by centre-back Matt Clarke, as Pompey searched for an equaliser.
But the Bees held on for all three points, and will travel to high-flying Accrington Stanley on Saturday full of confidence.
BARNET: Stephens, Pearson, N’Gala, Nelson, Yiadom ©, Champion, Randall (Vilhete 59’), Weston, Akinde (Sesay 83’), Stevens (Togwell 51’).
Subs Not Used: Gambin, Shomotun, McKenzie-Lyle, Hackett.