Villa were able to accumulate their latest points over a Portsmouth side which is already firmly entrenched at the bottom of the table and, on this latest showing, expected to remain in their precarious position.
With the Nigel Reo-Coker controversy hanging over his head Villa manager, Martin O'Neill, called up John Carew to replace the former West Ham star and reverted to a 4-4-2 system,
There were no early signs that the training ground incident between O'Neill and Reo-Coker had effected the rest of the squad as Villa, as expected, dominated most of the early play.
But it was generally untidy as neither side could get any flowing movements into their game.
Portsmouth, without a single point from their opening five games, were then indebted to a brilliant save from David James displayed his international quality when he displayed great reflexes to tip a back header from his own skipper, Aaron Mokoena, over the bar.
Mokoena's direction was not so accurate when he attempted to put Pompey ahead. Michael Brown's right-wing cross was met by Mokoena, but his effort went wide of the far post.
The stalemate was eventually broken in the 33rd minute when Nadir Belhadj, who had previously put in some good defensive work, brought down Villa skipper, Stiliyan Petrov, and Milner converted the penalty for his first goal of the season.
So far as Portsmouth were concerned it was a tale of mistakes as was highlighted in the 43rd minute. A long ball from Milner was expertly shielded by Agbonlahor to prevent a tackle from Tal Ben Haim and the Villa striker raced on to blast home his third goal in the last three games.
Pompey were under strong pressure at the start of the second half when Carew should have added to Villa's score but carelessly wasted the opportunity.
James then distinguished himself again with another of his trademark reflex saves when he pushed out an effort from Petrov.
Portsmouth decided to adopt a more attacking style in an attempt to redeem themselves with Fredric Piquionne and Kevin-Prince Boateng both having shots saved by Brad Friedel.