Villa's Wembley dream was shattered as they failed to overcome a 3-1 semi-final deficit in the Capital One Cup.
Paul Lambert's men were winners on the night but the only people celebrating were Bradford's 6,300 supporters as the Yorkshire side booked a place against Swansea City or Chelsea in the final.
It was a bitterly cold and bitterly disappointing night for Villa.
Despite trailing by two goals from the first leg at Valley Parade, they looked perfectly capable of going through when they dominated the first half and led through Christian Benteke's 23rd-minute goal.
But a James Hanson equaliser nine minutes after the interval totally changed the complexion of the tie, and sub Andi Weimann's 89th-minute goal came too late to make any difference.
Yet it had initially looked so promising as Villa opened at a high tempo, with Charles N'Zogbia continuing to display the creativity which had set up both goals in Saturday's 2-2 draw with Albion.
Twice inside the opening six minutes, the French midfielder delivered menacing crosses from the right which might easily have brought a reward.
The first was headed just wide by Benteke, who then headed the second on for Matt Lowton.
The full-back was perfectly placed in front of goal but was unable to keep his header down.
In the next attack, Gabby Agbonlahor sent Benteke racing down the right and moved sharply for a return pass which would surely have brought a goal had Rory McArdle not made a vital interception.
The visitors' first effort saw Hanson head over from a Gary Jones free-kick but Villa were soon back on the offensive.
Benteke's header from yet another N'Zogbia cross was held by keeper Matt Duke before Fabian Delph made a forceful run to send a right-footer just too high, while Agbonlahor's low shot on the turn was well anticipated by the diving Duke.
And in the 23rd minute Villa's pressure told with a well-taken goal.
Barry Bannan played the ball wide to Joe Bennett and the left-back's pinpoint centre was volleyed home right-footed by Benteke before Duke could react .
Four minutes later, Stephen Ireland had the ball in the net following more good work by Bennett, only to be ruled offside, while Duke twice rescued Bradford with superb saves.
The keeper tipped over N'Zogbia's stinging angled drive and a few minutes later was at full stretch again to push over Ireland's well-measured effort from just outside the penalty area.
A minute before the break Benteke headed narrowly wide at the far post from Ireland's cross although Bradford also went close on the stroke of half-time when Nahki Wells curled a shot just beyond the far post.
After Benteke had opened the second period with a glancing header which flew across the face of goal, skipper Ron Vlaar sent a ferocious free-kick thudding into the Bantams' defensive wall.
Midfielder Nathan Doyle was winded by the shot and it was a couple of minutes before he could continue.
But just when Villa looked like they were taking a strong foothold, they were rocked by Hanson's equaliser, the Bradford striker climbing to meet Jones's corner with a firm header which left Shay Given helpless.
It almost got worse, too, Hanson misdirecting a header right in front of goal when it looked easier to score, and although Ireland stabbed only just wide of the near post after a fine move, the visitors were desperately close to a second when sub Garry Thompson's 18-yard shot hit the bar.
Weimann's late goal briefly brought the tie alive again, the sub going past Duke to slot home from close range.
But sadly, it was too little, too late.
Villa: Given; Lowton, Vlaar, Clark, Bennett (Weimann 70); Ireland, Bannan (Bent 62), Delph; N'Zogbia, Agbonlahor; Benteke. Unused subs: Guzan, Holman, Stevens, Lichaj, Carruthers.
Bradford City: Duke; Darby, McArdle, McHugh, Good; Hines (Thompson71), Doyle, Jones, Atkinson; Wells (Turgott 87), Hanson. Unused subs: McLaughlin, Ravenhill, Reid, Connell, Nelson.