The home side took a 17th-minute lead when Villa failed to clear a corner and Zavon Hines’ subsequent shot deflected into the path of Nahki Wells, who instinctively tucked his finish past Shay Given.
Remarkably, the League Two outfit doubled their lead with 13 minutes remaining thanks to Rory McArdle’s powerful low header from Gary Jones’ cross.
Paul Lambert’s men did halve the deficit courtesy of Andreas Weimann’s late strike, but Carl McHugh restored Bradford’s two-goal cushion in the 88th minute to put Phil Parkinson’s side in a strong position ahead of the second leg in a fortnight.
“Pretty sure we will be [favourites], being at home with crowd behind us but is a big game for us now,” Lambert told BBC Sport.
He added: “”I am very disappointed with the result. We knew it was coming from set-pieces. We never defended them well at all and that is what hurt us.
“They are a vital part of the game and that wasn’t good enough.”
Bradford manager Parkinson insisted the pressure is now on the Premier League side to overturn the first-leg deficit at Villa Park.
“Yes. To score three goals against a Premier League team is an outstanding achievement. We played so well,” Parkinson said.
“They came with really attacking line-up but they left space and we passed the ball so well.
“They had chances but so did we. We don’t want to get carried away with our celebrations because we still have to go to Villa Park for the second leg but the lads can enjoy themselves tonight.
“Now we can got there and really enjoy it because the pressure will be on Villa.”
ENHANCED ODDS: Get 8/1 on Chelsea, Liverpool and City to win