A first half Andy Yiadom strike wasn’t enough to stop Barnet falling to a 3-1 defeat at Fratton Park.
Mauro Vilhete’s right wing cross was neatly slotted home by Yiadom to give Barnet the lead on 24 minutes.
But Portsmouth equalised after 36 minutes when Conor Chaplin fired the ball past Stephens from the right side of the area.
Pompey took the lead in controversial circumstances as Adam McGurk latched onto Adam Webster’s through ball and poked it past Jamie Stephens on 54 minutes.
Barnet’s defence appeared to stop playing thanks to an offside flag from the linesman, but referee Darren England overruled the decision and allowed the goal.
Further controversy followed after 65 minutes when England sent off Bees keeper Stephens for a second bookable offence.
Stephens came out of his goal to close down the onrushing Bennett, but seemed to make little contact with the Pompey forward.
Ten-man Barnet attempted to force an equaliser, but were punished on the break as Chaplin fired past debutant Kai McKenzie-Lyle in the final minute.
It was harsh on Barnet, who matched the hosts for much of the match until Stephens’ red card.
The Bees now face local rivals Stevenage at The Hive next Saturday.
Barnet: Stephens (GK), Hoyte, Johnson, Dembele, N’Gala, Yiadom, Weston (C), Akinde (McKenzie-Lyle 67’), Vilhete (Muggleton 58’), Gambin (Gash 58’), Togwell.
Subs not used: Nelson, Tomlinson, Champion, McLean.