Milan Baros' first-half goal for Aston Villa condemned hapless Portsmouth to a ninth straight away defeat.
Baros hit his 10th goal of the season for Villa
Pompey boss Harry Redknapp watched in horror as his defence failed to mark Baros from a James Milner free-kick and the striker headed home on 36 minutes.
Lomana LuaLua was Pompey's only threat in attack and he set up Gary O'Neil for a strike which was well saved by Thomas Sorensen shortly after the break.
But Villa deservedly held on, leaving Pompey still eight points from safety.
With Aston Villa's injury-hit defence and Portsmouth's woeful away record, the game always promised to be open and so it proved in the first half.
David O'Leary's defensive woes were evident in his team selection, the Villa boss springing a surprise by rushing Wilfred Bouma back into the side after three months out with a knee injury.
However, the hosts, and in particular Kevin Phillips, were sharp in attack and it was Phillips who had the game's first clear chance.
The striker, restored to the starting line-up at the expense of Juan Pablo Angel, was sent clear by Steven Davis' superb through-ball but Dean Kiely was quick to see the danger and blocked the shot.
Gary O'Neil twice came close to breaching Villa's shaky defence and matters took a turn for the worse when Jlloyd Samuel limped off to be replaced at right-back by Ecuadorian midfielder Ulises de la Cruz.
LuaLua took advantage of the uncertainty, holding off three defenders to set up O'Neil, whose shot was pushed past the post by Sorensen.
From the resulting corner, Villa broke to devastating effect and though Phillips' clever lob was narrowly wide, the hosts were ahead a minute later through Baros.
Redknapp resisted the temptation to make any half-time changes and he had barely reached the dug-out when his side put together their best move of the match.
O'Neil exchanged passes with LuaLua but Sorensen collected the eventual shot.
The sweeping attack failed to be a sign of things to come for Portsmouth and the second half was desperately short on quality.
LuaLua continued to work tirelessly up front, but his team-mates failed to match him for effort or quality.
O'Neil summed up Portsmouth's unhappy day by sending an attempted volley on goal behind him and almost out of play on the sideline.
Villa should have wrapped up victory through Phillips at the death before Portsmouth laid seige on the hosts' goal.
But O'Leary's side held on for the three points which eases their own relegation worries but only adds to Pompey's.
Aston Villa assistant boss Roy Aitken:
"It was important to pick up three points at home, because our home form this season could be better.
"I think we could have had three or four goals today.
"Normally the safety target is 38 to 40 points but we're looking up. We want to catch the teams above us so it's vital we continue to pick up points."
Portsmouth boss Harry Redknapp:
"The marking for Baros' goal was horrendous. We give everyone jobs to do and tell them 20, 50, 100 times.
"Then they get a corner and Baros is completely free at the back post to head into an open goal - scandalous play.
"There are four teams in the relegation battle and we're second favourites to go down. It's going to be very difficult to catch West Brom and Birmingham but it's not over. We've got to keep going."
Aston Villa: Sorensen, Samuel (De la Cruz 23), Hughes, Ridgewell, Bouma, Milner, Davis, McCann, Barry, Phillips, Baros (Moore 59).
Subs Not Used: Taylor, Hendrie, Angel.
Goals: Baros 36.
Portsmouth: Kiely, Griffin (Priske 79), Primus, O'Brien, Taylor, Routledge, Pedro Mendes, Davis (Koroman 68), O'Neil, LuaLua, Todorov (Karadas 55).
Subs Not Used: Guatelli, Songo'o.
Ref: M Dean (Wirral).