Substitute Thomas Hitzlsperger proved to be Aston Villa's lucky charm again as David O'Leary's side clinched only their second away win of the season at Fratton Park.
Both sides seemed to be running out of ideas for the winner before Hitzlsperger delivered the crucial blow in the 73rd minute - 20 minutes after coming on as a replacement for disappointing midfielder Lee Hendrie.
The German international scored the winning goal in Villa's only previous win on the road at Bolton in November and he was again the inspiration as the visitors settled a game which both sides could have won.
Hitzlsperger collected a pass from striker Juan Pablo Angel on the edge of the area before flicking the ball up in one motion and striking a crisp left-foot volley past leaden-footed goalkeeper Konstantinos Chalkias and inside the right-hand upright.
Portsmouth manager Velimir Zajec made two changes to his starting line-up from the team that lost at Tottenham last week, bringing back Steve Stone and giving a full debut to Greek midfielder Giannis Skopelitis.
The home side were immediately on the attack. Midfielder Patrik Berger created an opening for record signing Diomansy Kamara after only seven minutes but the striker dragged his shot two yards wide of goal with just goalkeeper Thomas Sorensen to beat.
But Villa recovered from their slow start and took the lead ten minutes later, although their goal had a lot of good fortune about it.
Striker Luke Moore exchanged passes with Hendrie before breaking clear on the left-hand side and cutting in on goal. His cross into the six-yard area was intended for Angel but Portsmouth captain Arjan De Zeeuw got in first to divert the ball past Chalkias and into his own goal.
Dejan Stefanovic produced a crucial block 90 seconds later to thwart a goalbound effort from Moore, before Portsmouth's Richard Hughes became the first player to be booked by referee Dermot Gallagher for a foul on Nolberto Solano soon after.
Portsmouth soon fought their way back into the game with Berger at the forefront of their attacking play.
The Czech midfielder was unlucky not to level the scores in the 21st minute when, as Villa's defence backed off, he let fly with a fizzing left-foot shot from 25 yards out which had Sorenson beaten only for the ball to rebound off the left-hand post to safety.
Kamara appeared to be felled in the penalty area by Gareth Barry just seconds later but Portsmouth didn't have long to wait for a penalty when the same Villa player tripped Stone in the 23rd minute.
Leading scorer Yakubu Ayegbeni stepped forward and had no trouble in sending Sorensen the wrong way from the spot to net his 14th goal of the season.
Berger almost put Pompey in front on the half-hour mark with a rasping drive from the edge of the area that flew narrowly over the crossbar, before Kamara squandered a good headed opportunity two minutes later after being set up by the Czech.
Villa emerged in a more attacking mode after the interval and managed their first shot on goal in the 64th minute.
Defender Olof Mellberg had already sent a free header over the crossbar when Solano picked out Angel's well-timed run with a neat pass. The Colombian wasted no time in dispatching his shot but Chalkias moved well to his right to save.
Angel should have done better six minutes later when finding himself unmarked in the six-yard area after Solano robbed Matthew Taylor on the right and centred, but the striker sent a thumping header against the crossbar and Portsmouth gratefully cleared.
Hitzlsperger produced his magnificent volley soon after but Pompey could still have gained a share of the points but for a late miss from Kamara.
Richard Hughes' deflected shot fell neatly into the striker's path but he snatched his left-foot shot and sent it well wide.
Man-of-the-Match: Patrik Berger
An inspirational performance from the Czech midfielder would have earned Pompey three points if their strikers were on form.