Bermudan striker Nahki Wells coolly despatched a shot from inside the penalty area following a rebound in the 19th minute and defender Rory McArdle headed home skipper Gary Jones' cross in the 77th minute to give the npower League Two side an unlikely two-goal lead.
Bradford almost put the tie beyond their top-flight opponents moments later when striker James Hanson headed against the crossbar but Villa, who spurned a hatful of chances in either half, grabbed a crucial late lifeline through Andreas Weimann before Carl McHugh restored the home side's two-goal advantage with another header two minutes from full-time.
City, who had already sent Premier League clubs Wigan and, unforgettably, Arsenal packing in the previous rounds, were a match throughout for Villa, who were thwarted on at least half a dozen occasions by the heroics of home goalkeeper Matt Duke.
Wells sent most of Valley Parade into raptures in the 19th minute. Jones' corner was headed out to Zavon Hines on the edge of the area and when his shot was deflected by Villa skipper Ciaran Clark, the unmarked Wells kept his composure after the ball had ricocheted into his path 12 yards from goal to steer a low, right-footed shot into the bottom corner in the 19th minute.
Villa dangerman Charles N'Zogbia made space for a shot after a mazy run across the area that was blocked by Duke, who then produced another smart save to keep out Christian Benteke's rasping shot from the edge of the area as Villa threatened to level the tie.
However, Bradford went close again in the 34th minute. Hines brilliantly cut inside on the right edge of the area and arrowed in a shot that Shay Given saved at his near post and two minutes later Hanson's towering header was cleared off the goalline by Fabian Delph.
Duke was next to perform heroics. N'Zogbia's blistering pace took him to the by-line and from his cutback, Gabriel Agbonlahor's goalbound volley was turned away at full stretch by the City goalkeeper. Villa should have equalised three minutes after the restart but Benteke's header from Barry Bannan's cross was blocked by Duke, who then kept out Agbonlahor's close-range effort.
Villa striker Darren Bent replaced Agbonlahor in the 57th minute before Hanson fluffed his lines, failing to properly connect with Hines' cross, while Bent blazed a volley at the other end. Bradford's West Ham loanee Blair Turgott replaced Hines in the 66th minute and then Bent wasted a golden chance for Villa's equaliser, heading over the crossbar with the goal at his mercy after Benteke's shot had rebounded off Duke.
McArdle headed home Jones' cross in the 77th minute to give the hosts a two-goal lead although Weimann bravely pulled one back for Villa when he turned the ball home at the far post five minutes later. But the Bantams fans were in dreamland once more when another City defender, McHugh, launched himself at Turgott's ball in with two minutes remaining to edge them closer to a dream Wembley final.