Stevenage continued their impressive form as midfielder Filipe Morais scored his first ever goals for the club to secure victory over Portsmouth.
The Portuguese headed in Lucas Akins's cross before Wes Thomas thought he had levelled, only for Mark Roberts to clear brilliantly off the line.
Jon Harley did equalise with a superb turn and shot from outside the area.
But Morais grabbed his second and the points when his cross eluded everyone and found the net.
Portsmouth applied late pressure but suffered their first league defeat in six games, while Stevenage have only been beaten once in their last 10 and closed the gap on League One leaders Tranmere to one point.
VIEWS FROM DRESSING ROOM
Portsmouth manager Michael Appleton told BBC Radio Solent:
"I felt the first half wasn't particularly great and we didn't start well enough.
"I was happy with the performance in the second half, we moved the ball better and created a few opportunities but lost to a poor, poor goal.
"Wes will be a hand full for any defence but it just didn't quite happen for him in front of goal and I'm sure he'll make up for that at Sheffield United.
"We would love to keep Wes here, but we'll have to talk to Bournemouth and hopefully we'll get the right answer.
"It was a frustrating game, we played well, but I am disappointed with the way we lost the game."
Live Text Commentary
Full Time The game is over, as the referee blows his whistle.90:00 +2:49
Shot by Carl Dickinson from outside the area goes high over the crossbar.88:40 Substitution
Substitution Robbie Rogers comes on in place of Lucas Akins.86:32 Booking
Booking Carl Dickinson is shown a yellow card for unsporting behaviour.83:27
Effort from inside the penalty area by Lucas Akins bounces off the post.80:52
Free kick awarded for a foul by Greg Tansey on Johnny Ertl. Direct free kick taken by Brian Howard.80:15 Substitution
Substitution Oliver Risser joins the action as a substitute, replacing Luke Freeman.79:32
Marcus Haber is ruled offside. Free kick taken by Mikkel Andersen.78:53
Jon Harley gives away a free kick for an unfair challenge on David Gray. Steve Arnold takes the free kick.78:13
David Gray concedes a free kick for a foul on Jon Harley. Free kick taken by Carl Dickinson.75:21
Izale McLeod has an effort at goal from deep inside the area missing to the right of the goal.71:04
Brian Howard fouled by Anthony Grant, the ref awards a free kick. Free kick taken by Lee Williamson.70:16
Johnny Ertl takes a shot. Blocked by Mark Roberts.69:49
Jon Harley produces a cross, clearance made by Mark Roberts.67:51
Corner taken by Brian Howard, Marcus Haber manages to make a clearance.67:03
Corner taken by Luke Freeman from the right by-line played to the near post, clearance made by Carl Dickinson.66:14 Substitution
Substitution James Dunne leaves the field to be replaced by Anthony Grant.65:36
Johnny Ertl takes a shot. Save by Steve Arnold.60:57
Assist on the goal came from James Dunne.60:57 Goal scored
Goal! - Filipe Morais - Stevenage 2 - 1 Portsmouth Filipe Morais scores a goal from outside the box to the bottom right corner of the goal. Stevenage 2-1 Portsmouth.
Darius Charles fouled by Brian Howard, the ref awards a free kick. Filipe Morais takes the free kick. Inswinging corner taken left-footed by Luke Freeman, Lucas Akins takes a shot. Johnny Ertl gets a block in. Corner taken by Filipe Morais from the left by-line.58:31
Izale McLeod crosses the ball.58:16
Free kick awarded for an unfair challenge on Brian Howard by Greg Tansey. Direct free kick taken by Brian Howard.57:29
Wes Thomas is caught offside. Free kick taken by Steve Arnold.54:43
Foul by Carl Dickinson on Lucas Akins, free kick awarded. Free kick taken by David Gray.53:06
Carl Dickinson produces a shot on goal direct from the free kick.53:06 Booking
Booking The referee shows Greg Tansey a yellow card.53:02
Greg Tansey gives away a free kick for an unfair challenge on Jon Harley.50:28
Brian Howard provided the assist for the goal.50:28 Goal scored
Goal! - Jon Harley - Stevenage 1 - 1 Portsmouth Jon Harley finds the back of the net with a goal from long range to the bottom right corner of the goal. Stevenage 1-1 Portsmouth.46:19
Wes Thomas takes a shot. Mark Roberts gets a block in. Corner taken left-footed by Brian Howard.45:53
Unfair challenge on Filipe Morais by Johnny Ertl results in a free kick. Free kick taken by Greg Tansey.45:42
The ball is crossed by Jon Harley.45:01
The game restarts for the second half.45:01 Substitution
Substitution (Portsmouth) makes a substitution, with Mustapha Dumbuya coming on for Akos Buzsaky.45:00 +1:23 Half time
Half Time The first half comes to an end.45:00 +0:48
Filipe Morais concedes a free kick for a foul on Johnny Ertl. Mikkel Andersen takes the free kick.45:00 +0:01
Effort on goal by Filipe Morais from outside the box goes harmlessly over the bar.43:58
Wes Thomas has shot on goal from just outside the box which goes wide of the right-hand upright.42:12
Greg Tansey concedes a free kick for a foul on Brian Howard. Free kick taken by Carl Dickinson.41:30
Luke Freeman produces a cross.40:22
Wes Thomas takes a shot. Blocked by Mark Roberts. Lee Williamson takes a shot. Darius Charles gets a block in.39:23
Free kick awarded for an unfair challenge on Jon Harley by Greg Tansey. Direct free kick taken by Lee Williamson.37:42
Wes Thomas takes a shot. Luke Freeman gets a block in. Corner taken by Brian Howard from the right by-line to the near post, save by Steve Arnold.37:10
Darius Charles crosses the ball. The ball is sent over by Lucas Akins.35:45
Inswinging corner taken left-footed by Brian Howard from the right by-line. Lubomir Michalik concedes a free kick for a foul on Mark Roberts. Steve Arnold takes the free kick.34:39
Lucas Akins delivers the ball.32:56
Lee Williamson crosses the ball, save by Steve Arnold. Corner taken left-footed by Brian Howard from the left by-line, clearance made by Marcus Haber.32:02
The referee gives a free kick against Jon Harley for handball. Greg Tansey restarts play with the free kick.30:54
A cross is delivered by Luke Freeman, Carl Dickinson makes a clearance.29:41
Effort on goal by Izale McLeod from deep inside the penalty area misses to the right of the goal.28:49
Centre by David Gray, clearance by Carl Dickinson. Corner taken by Luke Freeman, Johnny Ertl manages to make a clearance.27:54
The ball is swung over by David Gray.25:37
Unfair challenge on Greg Tansey by Brian Howard results in a free kick. Greg Tansey restarts play with the free kick.25:07
Filipe Morais takes a shot from inside the box clearing the bar.24:14
Filipe Morais is ruled offside. Free kick taken by Gabor Gyepes.22:58
Free kick awarded for a foul by Bondz N'Gala on Izale McLeod. Shot on goal comes in from Akos Buzsaky from the free kick, save made by Steve Arnold.22:28
Free kick awarded for a foul by Filipe Morais on Carl Dickinson. Free kick taken by Mikkel Andersen.21:22
Wes Thomas is caught offside. Free kick taken by Steve Arnold.20:24
Izale McLeod is ruled offside. David Gray restarts play with the free kick.20:05
Darius Charles delivers the ball, Lubomir Michalik manages to make a clearance.19:31
Lee Williamson gives away a free kick for an unfair challenge on Greg Tansey. Darius Charles restarts play with the free kick.17:28
Free kick awarded for a foul by Darius Charles on Akos Buzsaky. Brian Howard takes the direct free kick.16:43
The ball is sent over by Luke Freeman, clearance by Lee Williamson.15:44
Filipe Morais is flagged offside by the assistant referee. Free kick taken by Lee Williamson.13:50
The assist for the goal came from Lucas Akins.13:50 Goal scored
Goal! - Filipe Morais - Stevenage 1 - 0 Portsmouth Filipe Morais finds the back of the net with a headed goal from close in. Stevenage 1-0 Portsmouth.13:37
Lucas Akins crosses the ball,12:29
Brian Howard delivers the ball, save by Steve Arnold. Inswinging corner taken from the right by-line by Brian Howard, Marcus Haber manages to make a clearance. Lee Williamson takes a shot. Save by Steve Arnold.8:49
Akos Buzsaky fouled by Greg Tansey, the ref awards a free kick. Akos Buzsaky produces a shot on goal direct from the free kick, save by Steve Arnold.5:49
Lucas Akins takes a shot. Jon Harley gets a block in.5:06
Greg Tansey fouled by Carl Dickinson, the ref awards a free kick. James Dunne restarts play with the free kick.3:23
Lee Williamson gives away a free kick for an unfair challenge on Luke Freeman. Filipe Morais crosses the ball in from the free kick.1:39
Corner taken right-footed by Filipe Morais from the left by-line, clearance made by Gabor Gyepes.0:16
Free kick awarded for a foul by Filipe Morais on Carl Dickinson. Free kick taken by Mikkel Andersen.0:00
The match gets underway.
Live data and text provided by our data suppliers