Fabian Delph fired the hosts in front shortly after the break, while Brown Ideye and Joleon Lescott missed glorious opportunities for the visitors before Scott Sinclair wrapped the tie up late on.
Both sides ended the night with 10 men as Claudio Yacob and Jack Grealish were dismissed for picking up two yellow cards towards the end of the match, before play was halted by a pitch invasion late on.
But the result was already confirmed and it caps a superb week for Tim Sherwood’s men, whose victory over the Baggies in the Premier League on Tuesday lifted them out of the relegation zone.
The hosts were hoping to use Tuesday’s victory as motivation for their cup encounter, but it was Tony Pulis’ men who had the better of the first half. Former Villa midfielder Craig Gardner battled to win the ball and rolled it into the path of Berahino, who drilled a low shot across goal to force a good save from Shay Given.
Moments later the visitors should have taken the lead after Gardner was involved again, picking up Craig Dawson’s pass and crossing low into the area, but Ideye could only blaze his first-time shot over the bar with the goal at his mercy.
Villa had the odd spell of possession as the likes of Delph and Chalres N’Zogbia tried to create something, but Sherwood’s men regularly saw their attacks break down.
Given was called into action again 10 minutes before the break as Brunt fired a speculative shot from outside the box, and it took a deflection off a team-mate before looping towards the target and forcing the goalkeeper to turn it over the bar.
Sherwood’s half-time team talk seemed to have the desired effect as the hosts came out for the second half with much more ambition, and six minutes in their efforts were rewarded. N’Zogbia picked the ball up on the right-hand side and squared it across the edge of the box, where Delph was there to meet it and hammer a powerful effort which zipped through Boaz Myhill’s legs and into the net.
Tony Pulis’ men could – and perhaps should – have levelled it soon after, but Lescott could somehow only head wide from close range after Tom Cleverley flicked a West Brom corner across his own six-yard box.
Yacob then got his marching orders for a second yellow card as he was penalised for a challenge on Bacuna, before Sinclair sealed the victory as he doubled Villa’s lead on 85 minutes, picking the ball up off Grealish and cutting on to his right foot to fire a curling effort into the far corner.
Substitute Grealish was then sent off in stoppage time as he also earned two yellow cards, the second for diving from the referee, but the result was already beyond doubt as Villa made it two wins over West Brom in a week.
The end of the game was marred by a pitch invasion late on, but play quickly resumed and the fans charged back on as the final whistle went to confirm Villa’s place at Wembley.