Match ends, Aston Villa 0, Middlesbrough 0.
Aston Villa 0-0 Middlesbrough (Agg 1-0)
Aston Villa held their nerve as they kept out Middlesbrough to set up a Championship play-off final against Fulham at Wembley.
Stewart Downing's 89th-minute free-kick against the bar was as close as Boro came to forcing extra time.
But Villa held on to win the play-off semi-final thanks to Mile Jedinak's first-leg header.
It came on a night when the club paid tribute to former player Jlloyd Samuel, who died in a car crash on Wednesday.
A minute's applause was held at Villa Park before the match and supporters sang "there's only one Jlloyd Samuel" during the tribute.
For all their commitment and effort, Tony Pulis' side were sentenced to at least another season in the Championship after failing to test Villa keeper Sam Johnstone.
Villa did survive one scare at the end when keeper Johnstone was booked for being adjudged to have handled Adama Traore's attempted chip outside the box.
It might not have had the pace to beat the backtracking defenders, which led to referee Mike Dean opting to show a yellow card rather than red.
Boro could not take advantage of the subsequent free-kick, former Villa winger Downing's left-footed effort cannoning off the top of the bar and away to safety.
Boro give Villa late scare
After Villa failed to cash in on their powerful start, roared on by their hungry fans, a tense first half proved to be one of bits and pieces when it came to end product.
Conor Hourihane looked certain to score from six yards out, only to be denied and left limping by a superbly brave tackle from George Friend.
But Villa defender James Chester's right-foot shot on the turn was probably the best chance, going just wide.
At the start of the second half, Lewis Grabban then went even closer when denied at the near post following top-scorer Albert Adomah's low delivery from the left flank.
And on-loan Bournemouth striker Grabban had a thundering long-range effort tipped over.
The introduction of Rudy Gestede left Villa with the challenge of dealing with two of their former front players, Traore having proved, as expected, a real handful.
But there were no real alarms right until that heart-stopping double escape at the death.
Aston Villa manager Steve Bruce told BBC Sport:
"It [Sam Johnstone's handball] probably should have been a red card, but, with only two minutes left, it might not have made much difference.
"They only had one shot on target in two games and we had the better chances tonight. If any team deserved to win, it was us.
"I'm delighted for our fans who have suffered a lot. Now we've got 11 days to prepare for Wembley.
"It'll be very difficult against Fulham but it'll be two football-playing teams and we hope to give them a game and show what we can do too.
"If you win in a play-off final, it's a great way to do it, but, if we are to win, we are going to have play very well."
Middlesbrough manager Tony Pulis told BBC Sport:
"Over the two games there have been periods when we've been on top, but we've not created enough chances.
"And, in the end, the teams that finished third and fourth over 46 games are going to Wembley.
"That's credit to Fulham and Villa, who are hard-working, stubborn and well organised."
On the decision not to send Villa keeper Johnstone off, Pulis added to Sky Sports: "I'm really disappointed.
"Everybody understands the rules and you need him to make the correct decision. I don't think he's made the correct decision.
"Personally, I think it was the wrong decision and I'm sure there are a lot of people watching who would agree with me."
- 1JohnstoneBooked at 87mins
- 21HuttonBooked at 45mins
- 7SnodgrassBooked at 34mins
- 14HourihaneSubstituted forWhelanat 85'minutes
- 10GrealishBooked at 60mins
- 37AdomahSubstituted forBjarnasonat 90+1'minutes
- 45GrabbanSubstituted forKodjiaat 79'minutes
- 5ShottonSubstituted forFabioat 82'minutes
- 3FriendBooked at 13mins
- 16HowsonSubstituted forGestedeat 73'minutes
- 27BesicBooked at 80mins
- 9AssombalongaSubstituted forBamfordat 68'minutes
- Mike Dean
- Shots on Target
Second Half ends, Aston Villa 0, Middlesbrough 0.
Attempt blocked. Adama Traoré (Middlesbrough) right footed shot from outside the box is blocked.
Foul by Fabio (Middlesbrough).
Jack Grealish (Aston Villa) wins a free kick on the left wing.
Foul by Adam Clayton (Middlesbrough).
Jack Grealish (Aston Villa) wins a free kick in the defensive half.
Attempt blocked. Fabio (Middlesbrough) left footed shot from the centre of the box is blocked. Assisted by Adam Clayton.
Attempt missed. Adam Clayton (Middlesbrough) right footed shot from outside the box misses to the left.
Substitution, Aston Villa. Birkir Bjarnason replaces Albert Adomah.
Stewart Downing (Middlesbrough) hits the bar with a left footed shot from outside the box from a direct free kick.
Sam Johnstone (Aston Villa) is shown the yellow card for hand ball.
Hand ball by Sam Johnstone (Aston Villa).
Attempt blocked. Adama Traoré (Middlesbrough) right footed shot from outside the box is blocked. Assisted by Patrick Bamford with a headed pass.
Substitution, Aston Villa. Glenn Whelan replaces Conor Hourihane.
Attempt blocked. Stewart Downing (Middlesbrough) right footed shot from outside the box is blocked. Assisted by Muhamed Besic.
Adama Traoré (Middlesbrough) wins a free kick in the attacking half.
Foul by Mile Jedinak (Aston Villa).
Attempt saved. Conor Hourihane (Aston Villa) left footed shot from outside the box is saved in the centre of the goal. Assisted by Albert Adomah.
Substitution, Middlesbrough. Fabio replaces Ryan Shotton.
Muhamed Besic (Middlesbrough) is shown the yellow card.
Foul by Muhamed Besic (Middlesbrough).
Jack Grealish (Aston Villa) wins a free kick on the right wing.
Attempt blocked. Albert Adomah (Aston Villa) right footed shot from the left side of the box is blocked. Assisted by Conor Hourihane.
Substitution, Aston Villa. Jonathan Kodjia replaces Lewis Grabban.
Attempt missed. James Bree (Aston Villa) right footed shot from outside the box misses to the right following a corner.
Corner, Aston Villa. Conceded by Adam Clayton.
Attempt blocked. Robert Snodgrass (Aston Villa) left footed shot from outside the box is blocked.
Foul by Stewart Downing (Middlesbrough).
Robert Snodgrass (Aston Villa) wins a free kick in the attacking half.
Attempt saved. Jack Grealish (Aston Villa) right footed shot from outside the box is saved in the top right corner. Assisted by Conor Hourihane.
Substitution, Middlesbrough. Rudy Gestede replaces Jonny Howson.
Corner, Aston Villa. Conceded by Dael Fry.
Attempt blocked. Albert Adomah (Aston Villa) right footed shot from outside the box is blocked. Assisted by Lewis Grabban.
Corner, Aston Villa. Conceded by Darren Randolph.
Attempt saved. Lewis Grabban (Aston Villa) right footed shot from outside the box is saved in the top right corner. Assisted by Robert Snodgrass.
Substitution, Middlesbrough. Patrick Bamford replaces Britt Assombalonga.
Offside, Aston Villa. Alan Hutton tries a through ball, but Lewis Grabban is caught offside.
Corner, Aston Villa. Conceded by Ben Gibson.
Corner, Aston Villa. Conceded by Adam Clayton.