Delfouneso took just two minutes to make his mark at Fratton Park
Nathan Delfouneso came off the bench to score his first Premier League goal and keep Aston Villa's faint hopes of a top-four finish alive at Portsmouth.
It was no more than Villa deserved, the young striker prodding home on 82 minutes from Emile Heskey's flick-on.
But it was still a little harsh on the hosts after another brave display, kick-started by Michael Brown's curler.
John Carew drilled the leveller but also missed a penalty among a glut of chances, before Villa snatched victory.
And it could prove a crucial intervention from 19-year-old Delfouneso, his winner pushing Villa up to sixth spot, two points ahead of Liverpool, four behind Manchester City and six off fourth-placed Tottenham.
Tottenham's defeat of Chelsea on Saturday had prompted manager Martin O'Neill to reason before kick-off that his Villa side needed to win all of their last five games to have a chance of grabbing the final Champions League spot.
Villa outsiders for Europe - O'Neill
And despite a mixture of good goalkeeping, poor finishing and some strange decisions from referee Lee Probert, the visitors eventually secured a potentially priceless three points with four matches left in their season.
Portsmouth played their part in an entertaining and remarkably open tie, though.
Boosted by the return of a number of first-teamers, the hosts played with enviable freedom on the counter attack, while Villa pushed and probed with width and pace throughout.
As a result, chances for both sides were aplenty.
Villa keeper Brad Friedel did well to deny Kevin-Prince Boateng's snap-shot early on, Kanu seeing his follow-up blocked, while the American also tipped a Boateng free-kick wide and charged down John Utaka well to deny the Nigerian through on goal.
He could do little about Portsmouth's opener, though, Boateng cleverly stepping over Anthony Vanden Borre's cross and Brown curling a fine shot into the far corner for his first goal for the club.
At the other end, Carew somehow fired straight at James with the goal gaping, while Marc Wilson was lucky to see his attempted clearance from Ashley Young's cross rebound back off the post.
And between those two chances, Villa deservedly drew level. Carew was the goalscorer to make amends for his earlier miss, the Norwegian - onside - dashing onto Stephen Warnock's ball over the top, turning inside Wilson and thrashing into the roof of the net.
Probert, the same official that denied Bolton two strong penalty appeals against Chelsea in midweek, then took centre stage.
First he waved away Portsmouth's shouts for a spot-kick when Richard Dunne looked to have felled Boateng clumsily in the box, and then bizarrely did likewise to Villa's appeals despite Vanden Borre clearly hauling Agbonlahor to the ground in the home penalty area.
He finally gave in on 40 minutes after Papa Bouba Diop tripped Carew, but James responded with a smart save from the striker's penalty.
Grant pays tribute to pride
It did not dent Villa's ambition after the break, though, as the visitors continued to create chance after chance.
Agbonlahor will kick himself for heading straight at James from six yards out from Young's fine cross, while James Collins headed over unmarked soon after and Milner saw a long-ranger beaten away by the keeper.
And there were two further penalty appeals waved away as well, firstly when Young appeared to be tripped by Vanden Borre and the second when Stylian Petrov went over James's sprawling challenge in the box.
For all their pressure, though, it looked like Villa would have to settle for a point and possibly downgrade their ambitions of a top-six finish as well as the minutes ticked down with Portsmouth looking increasingly comfortable.
But Delfouneso had other ideas, the youngster taking only two minutes to fire home the winner after fellow substitute Heskey had flicked on Milner's cross.
Portsmouth boss Avram Grant: "Of course we wanted to win the game today, but first and foremost we wanted to play with pride, put on a good performance, and be professional and we did that.
"I am very happy with the boys even though we lost. We have so many players unavailable and yet we can play like that against a very good team - that pleases me.
"Despite everything that has happened with this team - and it is not easy - we continue to fight. I am very proud of them."
Aston Villa manager Martin O'Neill: "I'm delighted for Nathan (Delfouneso). I've been saying this for some considerable time, but he's going to be a proper player and if he keeps his feet on the ground, he's got a real proper chance.
"Now, to give ourselves any chance (of finishing fourth) we have to win all our games. Today would have been disappointing, considering the amount of possession we had away from home, not to have taken all three points.
"I'm delighted we've done that and we go to Hull on Wednesday and we're still full of hope."
90:00+3:17 The referee signals the end of the game.
90:00+0:58 Corner taken right-footed by Michael Brown from the left by-line, Joel Ward takes a shot. Brad Friedel makes a comfortable
90:00+0:47 The ball is sent over by Joel Ward, clearance made by Carlos Cuellar.
87:18 Substitution Papa Bouba Diop goes off and Matt Ritchie comes on.
86:58 The ball is crossed by Hassan Yebda, save by Brad Friedel.
86:27 Inswinging corner taken by Michael Brown, Brad Friedel makes a save.
86:17 Michael Brown takes a shot. Blocked by Richard Dunne.
84:41 Ashley Young has an effort at goal from deep inside the area missing to the right of the target.
84:02 Corner taken right-footed by Michael Brown from the right by-line, save by Brad Friedel.
83:54 The ball is crossed by Tommy Smith, blocked by Stephen Warnock.
83:20 Stiliyan Petrov gives away a free kick for an unfair challenge on Michael Brown. Marc Wilson takes the direct free kick.
81:32 James Milner sends in a cross,
81:30 Emile Heskey provided the assist for the goal.
81:30 GOAL - Nathan Delfouneso:Portsmouth 1 - 2 Aston Villa Nathan Delfouneso finds the net with a headed goal from close range. Portsmouth 1-2 Aston Villa.
81:13 Unfair challenge on James Milner by Anthony Vanden Borre results in a free kick. Ashley Young takes the free kick.
81:00 The ball is sent over by Nathan Delfouneso, clearance made by Aaron Mokoena.
79:00 Substitution Nathan Delfouneso replaces Gabriel Agbonlahor.
79:00 Substitution Kevin-Prince Boateng leaves the field to be replaced by Joel Ward.
79:00 John Utaka has an effort at goal from outside the area which goes wide left of the target.
77:17 Header on goal by Tommy Smith from inside the box goes harmlessly over the target.
75:09 Centre by Stewart Downing, clearance made by Aaron Mokoena.
74:50 Stewart Downing crosses the ball, clearance by Leonard Sowah.
72:06 Ashley Young delivers the ball, Stewart Downing has a header from inside the six-yard box and clears the crossbar.
Correction - 71:09 Substitution Emile Heskey is brought on as a substitute for John Carew.
71:09 Substitution (Aston Villa) makes a substitution, with Emile Heskey coming on for John Carew.
68:13 Carlos Cuellar crosses the ball, save made by David James.
67:37 Kevin-Prince Boateng has an effort at goal from 30 yards. Comfortable save by Brad Friedel.
66:18 Papa Bouba Diop takes a long range shot clearing the crossbar.
66:08 Hassan Yebda takes a shot. Stiliyan Petrov gets a block in.
64:58 Substitution Nwankwo Kanu goes off and Tommy Smith comes on.
64:38 Stewart Downing delivers the ball.
62:21 Corner from right by-line taken by Ashley Young.
62:14 The ball is delivered by Stewart Downing, clearance made by Leonard Sowah.
61:09 James Milner has an effort at goal. Save by David James. The assistant referee signals for offside against Gabriel Agbonlahor.
David James takes the free kick.
60:32 A cross is delivered by John Carew, Marc Wilson gets a block in. Outswinging corner taken by Ashley Young from the right by-line.
59:18 Inswinging corner taken by Ashley Young from the left by-line, Header on goal by James Collins from inside the box goes harmlessly
over the target.
56:53 Corner taken right-footed by Kevin-Prince Boateng.
56:40 Michael Brown takes a shot. James Collins gets a block in.
56:29 Hassan Yebda takes a shot. Blocked by Stiliyan Petrov.
56:15 Michael Brown takes a shot. Blocked by Carlos Cuellar.
55:24 Free kick awarded for a foul by Stiliyan Petrov on Papa Bouba Diop. Free kick taken by Aaron Mokoena.
55:02 The ball is delivered by Ashley Young, Gabriel Agbonlahor takes a shot. Save by David James.
53:10 James Milner takes a shot. David James makes a comfortable save.
51:56 Ashley Young sends in a cross.
49:18 Centre by Stewart Downing.
49:06 The ball is delivered by Ashley Young, clearance made by Papa Bouba Diop.
48:49 The ball is delivered by Carlos Cuellar. Centre by Stephen Warnock.
48:42 The ball is sent over by Stewart Downing.
47:59 Stephen Warnock delivers the ball.
45:48 Outswinging corner taken left-footed by Stewart Downing from the left by-line to the near post, Aaron Mokoena makes a clearance.
45:39 Stewart Downing produces a cross, Anthony Vanden Borre gets a block in.
45:32 The ball is delivered by Stewart Downing, Marc Wilson makes a clearance.
45:01 The game restarts for the second half.
45:00+2:12 The referee calls an end to the first half.
45:00+1:41 Michael Brown has an effort at goal from outside the penalty box missing to the wide left of the goal.
44:59 Kevin-Prince Boateng decides to take a short corner. The offside flag is raised against Nwankwo Kanu. Free kick taken by Brad
Correction - 39:53 Penalty taken by John Carew is saved by David James. Portsmouth 1-1 Aston Villa.
Correction - 39:53 John Carew fouled by Papa Bouba Diop, the ref awards a Penalty.
39:53 Penalty taken by John Carew saved by David James. Portsmouth 1-1 Aston Villa.
39:53 Papa Bouba Diop challenges John Carew unfairly and gives away a Penalty.
39:14 The assistant referee signals for offside against John Utaka. James Collins takes the indirect free kick.
38:57 Ashley Young produces a cross, clearance by Papa Bouba Diop.
38:19 Papa Bouba Diop concedes a free kick for a foul on Ashley Young. Ashley Young restarts play with the free kick.
37:06 The referee gives a free kick against John Carew for handball. Marc Wilson takes the free kick.
36:31 Anthony Vanden Borre fouled by Gabriel Agbonlahor, the ref awards a free kick. David James takes the free kick.
34:47 Leonard Sowah gives away a free kick for an unfair challenge on Ashley Young. Free kick crossed left-footed by Stewart Downing
from right channel, save by David James.
32:44 Foul by John Carew on Aaron Mokoena, free kick awarded. David James restarts play with the free kick.
32:04 The ball is delivered by Ashley Young, Marc Wilson manages to make a clearance.
30:07 Richard Dunne gives away a free kick for an unfair challenge on Kevin-Prince Boateng. Free kick crossed by Kevin-Prince Boateng,
save by Brad Friedel. Corner taken right-footed by Michael Brown to the near post, clearance made by Stephen Warnock.
26:31 James Milner sends in a cross.
24:12 John Carew gives away a free kick for an unfair challenge on Michael Brown. Direct free kick taken by Marc Wilson.
23:20 The official flags Nwankwo Kanu offside. Brad Friedel restarts play with the free kick.
22:22 Michael Brown gives away a free kick for an unfair challenge on James Milner. James Milner takes the free kick.
21:49 Foul by John Carew on Papa Bouba Diop, free kick awarded. Kevin-Prince Boateng takes the free kick.
21:24 The ball is delivered by John Utaka.
20:46 The ball is sent over by John Carew, comfortable save by David James.
19:41 Centre by Ashley Young, blocked by Marc Wilson. A cross is delivered by Ashley Young, Papa Bouba Diop manages to make a clearance.
19:16 A cross is delivered by James Milner, comfortable save by David James.
18:07 Nwankwo Kanu takes a shot. Stiliyan Petrov gets a block in. John Utaka takes a shot. Carlos Cuellar gets a block in. Corner
taken by Kevin-Prince Boateng played to the near post, clearance by John Carew.
16:53 Free kick awarded for an unfair challenge on Nwankwo Kanu by Stiliyan Petrov. Michael Brown takes the direct free kick.
16:00 Assist by Stephen Warnock.
16:00 GOAL - John Carew:Portsmouth 1 - 1 Aston Villa John Carew grabs a goal from inside the area to the top left corner of the goal. Portsmouth 1-1 Aston Villa.
14:50 John Carew takes a shot. Save by David James. John Carew takes a shot. Save made by David James.
12:58 Stewart Downing takes a shot. Save made by David James.
12:10 The assistant referee signals for offside against Gabriel Agbonlahor. David James takes the indirect free kick.
11:44 Hassan Yebda produces a cross.
10:33 The ball is crossed by Ashley Young.
9:01 Assist by Anthony Vanden Borre.
9:01 GOAL - Michael Brown:Portsmouth 1 - 0 Aston Villa Michael Brown fires in a goal from just inside the area to the bottom right corner of the goal. Portsmouth 1-0 Aston Villa.
8:27 A cross is delivered by Carlos Cuellar, clearance made by Anthony Vanden Borre.
8:14 A cross is delivered by Carlos Cuellar, clearance by Marc Wilson.
6:00 Gabriel Agbonlahor gives away a free kick for an unfair challenge on Marc Wilson. David James takes the free kick.
5:07 James Milner crosses the ball, David James makes a comfortable save. James Collins challenges Kevin-Prince Boateng unfairly
and gives away a free kick. Marc Wilson restarts play with the free kick.
4:14 Leonard Sowah delivers the ball, Richard Dunne makes a clearance.
3:12 The ball is crossed by John Utaka, Nwankwo Kanu takes a shot. Blocked by James Collins.
1:46 Short corner taken by Ashley Young from the left by-line.
1:04 Hassan Yebda crosses the ball, Kevin-Prince Boateng takes a shot. Brad Friedel makes a comfortable save.
0:17 Stewart Downing takes a shot. Anthony Vanden Borre gets a block in. Inswinging corner taken right-footed by Ashley Young,
comfortable save by David James.
0:00 The ref blows the whistle to start the match.
Live text and data provided by The Press Association.
This page is best viewed in an up-to-date web browser with style sheets (CSS) enabled. While you will be able to view the content of this page in your current browser, you will not be able to get the full visual experience. Please consider upgrading your browser software or enabling style sheets (CSS) if you are able to do so.