By Phil McNultyChief football writer, BBC Sport at Valley Parade
Bradford City established a platform to spring another stunning Capital One Cup shock and reach Wembley with victory over Aston Villa at Valley Parade.
Phil Parkinson's League Two side - 60 places beneath Premier League Villa - made light of that gap on a thunderous night in Yorkshire to establish a crucial advantage in the semi-final first leg.
Nahki Wells gave the home side a first-half advantage as goalkeeper Matt Duke produced a string of outstanding saves to keep Villa, and Christian Benteke, at bay.
Villa still favourites - Parkinson
The Bantams terrorised Villa in the air throughout and it was no surprise when Rory McArdle doubled their lead with a powerful header 13 minutes from time.
Andreas Weimann looked to have given Paul Lambert's side a crucial lifeline with a scrambled late goal, but in a rip-roaring atmosphere Carl McHugh headed in Gary Jones's corner two minutes from time to make it very much advantage Bradford.
The job is only half done but after
disposing of Arsenal in the quarter-final
there will be no shortage of confidence in the underdogs as they stand 90 minutes from becoming the first side from the lowest tier to reach the final of this competition since Rochdale in 1962.
It was another defensive nightmare for Villa but they will feel they created enough opportunities to still harbour hopes of reaching Wembley. Their recent form, however, suggests the pressure is all on them.
This was Bradford's night and how they celebrated at the final whistle at the conclusion of an extraordinary game, even though they will be well aware that their toughest task still lies ahead.
Robbie SavageFormer League Cup winner and BBC Radio 5 live pundit
"Gary Jones has led by example in the middle of the park and goalkeeper Matt Duke has been magnificent. They have all been terrific to beat a Premier League side. It was an unbelievable tie - one of the best I have ever seen. I still make Villa slight favourites though because they have the quality and Bradford could be nervous. Can you say Villa have been embarrassed tonight? I'm not sure you can given that Bradford have played so well. But it will be very difficult for Paul Lambert to raise his players for the second leg."
And Villa's Belgian summer signing had four opportunities to give Villa the perfect start inside the opening 15 minutes but was twice denied by the outstanding Duke and headed two other presentable opportunities off target.
Once Bradford's nerves had settled, they made light of the gap between themselves and Villa, taking the lead after 20 minutes.
The visitors failed to clear a corner and when Zavon Hines's shot was blocked, it fell invitingly for Wells to sweep a powerful finish past keeper Shay Given to spark wild scenes of celebration.
Bradford sensed the unease of their rattled top-flight opponents and pushed for a second, Jim Hanson's header being kicked off the line by Fabian Delph when he was left unmarked.
Duke was distinguishing himself at regular intervals in Bradford's goal, keeping his side ahead with a fine block from Gabriel Agbonlahor as half-time approached.
Villa boss Lambert clearly delivered a blunt message to his players at the break and they laid siege to Bradford's goal in the early stages of the second half, only to find Duke once more in wonderfully defiant form.
He frustrated Benteke once more from a diving header, then reacted sharply to block another snap shot from Agbonlahor.
Lambert critical of Villa defending
It was Agbonlahor's last contribution of significance as he was replaced by Bent - who should have equalised only to head over from six yards after Duke had failed to hold Charles N'Zogbia's shot.
For all Villa's attacking intent, Bradford's endeavour and enthusiasm made them a constant threat, as they added a second with 13 minutes left. Villa's vulnerability in the air was exposed again as once more they failed to clear a corner, allowing Gary Jones to whip in a cross that was powered home by McArdle.
Hanson then headed against the bar as Villa needed something desperately to raise their spirits for the second leg. Weimann was brave enough to provide it as he beat Duke to a loose ball to bundle home.
Bradford, however, were in no mood to be denied and restored that crucial advantage two minutes from time when another corner proved Villa's undoing, McHugh heading in again from another Jones delivery.
Gary Jones takes a shot. Ciaran Clark gets a block in. Gary Jones decides to take a short corner.
James Hanson gives away a free kick for an unfair challenge on Matthew Lowton. Direct free kick taken by Ciaran Clark.
Booking Carl McHugh receives a caution for unsporting behaviour.
Assist on the goal came from Gary Jones.
87:53 Goal scored
Goal! - Carl McHugh - Bradford 3 - 1 A Villa Carl McHugh scores a headed goal from inside the six-yard box. Bradford 3-1 Aston Villa.
Corner taken by Gary Jones,
A cross is delivered by Matthew Lowton, clearance by Curtis Good.
Free kick awarded for an unfair challenge on Ciaran Clark by Nahki Wells. Nathan Baker takes the free kick.
Charles N'Zogbia takes a shot. Matt Duke makes a comfortable save.
Barry Bannan restarts play with the free kick.
Substitution Graham Burke is brought on as a substitute for Darren Bent.
Free kick awarded for a foul by Rory McArdle on Christian Benteke.
The ball is delivered by Will Atkinson.
Assist by Christian Benteke.
81:59 Goal scored
Goal! - Andreas Weimann - Bradford 2 - 1 A Villa Andreas Weimann scores a goal from inside the box to the bottom left corner of the goal. Bradford 2-1 Aston Villa.
Nahki Wells fouled by Ciaran Clark, the ref awards a free kick. Strike comes in from Nahki Wells from the free kick, comfortable save by Shay Given.
James Hanson takes a shot.
Free kick taken by Nathan Doyle.
Booking Fabian Delph receives a yellow card.
Fabian Delph challenges James Hanson unfairly and gives away a free kick.
Gary Jones provided the assist for the goal.
76:15 Goal scored
Goal! - Rory McArdle - Bradford 2 - 0 A Villa Rory McArdle grabs a headed goal from close in. Bradford 2-0 Aston Villa.
Gary Jones sends in a cross,
Corner taken right-footed by Gary Jones.
Nahki Wells takes a shot. Nathan Baker gets a block in. Inswinging corner taken by Gary Jones from the left by-line played to the near post, clearance made by Darren Bent.
The offside flag is raised against Darren Bent. Matt Duke takes the free kick.
Carl McHugh fouled by Christian Benteke, the ref awards a free kick. Matt Duke takes the direct free kick.
Free kick awarded for an unfair challenge on Blair Turgott by Charles N'Zogbia. Matt Duke restarts play with the free kick.
The ball is delivered by Andreas Weimann, Stephen Darby makes a clearance.
Charles N'Zogbia takes a shot. Save by Matt Duke. Close range headed effort by Darren Bent clears the crossbar.
Substitution Blair Turgott comes on in place of Zavon Hines.
Zavon Hines takes a shot.
The ball is delivered by Zavon Hines.
Christian Benteke gives away a free kick for an unfair challenge on Stephen Darby. Rory McArdle takes the direct free kick.
Effort on goal by Darren Bent from inside the penalty area goes harmlessly over the bar.
The ball is sent over by Andreas Weimann, Carl McHugh makes a clearance.
Matt Duke takes the direct free kick.
Booking Caution for Charles N'Zogbia.
Nahki Wells fouled by Charles N'Zogbia, the ref awards a free kick.
The ball is swung over by Andreas Weimann, blocked by Rory McArdle. Corner taken by Barry Bannan from the right by-line played to the near post, Carl McHugh manages to make a clearance.
The offside flag is raised against Nahki Wells. Free kick taken by Nathan Baker.
Shot by James Hanson from deep inside the penalty area misses to the left of the target.
Substitution Darren Bent replaces Gabriel Agbonlahor.
Corner taken right-footed by Gary Jones, Close range header by Carl McHugh goes over the bar.
Centre by Joe Bennett, Curtis Good makes a clearance.
Inswinging corner taken from the right by-line by Barry Bannan, save by Matt Duke.
Free kick awarded for a foul by Will Atkinson on Ciaran Clark. Barry Bannan takes the direct free kick.
Barry Bannan sends in a cross, Gabriel Agbonlahor has an effort at goal. Save made by Matt Duke. Barry Bannan takes a inswinging corner. Christian Benteke is penalised for handball and concedes a free kick. Matt Duke takes the indirect free kick.
Barry Bannan sends in a cross, Christian Benteke takes a shot. Brilliant save by Matt Duke.
Christian Benteke takes a shot. Blocked by Rory McArdle. Barry Bannan takes a inswinging corner from the right by-line to the near post.
The referee gets the second half started.
45:00 +1:15 Half time
Half Time The match has reached half-time.
Free kick awarded for a foul by Gabriel Agbonlahor on Nathan Doyle. Free kick taken by Matt Duke.
Charles N'Zogbia sends in a cross, Shot by Gabriel Agbonlahor from 12 yards. Save made by Matt Duke.
Zavon Hines crosses the ball, Headed effort from deep inside the area by James Hanson misses to the right of the target.
Effort from the edge of the penalty area by Zavon Hines goes wide of the left-hand post.
The ball is swung over by Will Atkinson, clearance by Nathan Baker. Outswinging corner taken by Gary Jones, James Hanson takes a shot. Joe Bennett manages to make a clearance.
Charles N'Zogbia delivers the ball, clearance by Curtis Good.
Free kick awarded for an unfair challenge on Charles N'Zogbia by Nahki Wells. Charles N'Zogbia takes the direct free kick.
Zavon Hines takes a shot. Shay Given makes a brilliant save.
Effort on goal by Nahki Wells from just inside the area clears the crossbar.
Outswinging corner taken by Barry Bannan, Headed effort from deep inside the penalty area by Christian Benteke goes harmlessly over the crossbar.
Christian Benteke takes a shot. Save by Matt Duke. Inswinging corner taken left-footed by Barry Bannan, Matt Duke makes a save.
Unfair challenge on James Hanson by Ciaran Clark results in a free kick. Centre by Nathan Doyle, James Hanson takes a shot. Save by Shay Given.
Charles N'Zogbia takes a shot. Save by Matt Duke.
The ball is swung over by Zavon Hines, James Hanson takes a shot. Save by Shay Given.
Unfair challenge on Will Atkinson by Barry Bannan results in a free kick. Nathan Doyle restarts play with the free kick.
Inswinging corner taken left-footed by Barry Bannan played to the near post, clearance made by Curtis Good.
Nathan Doyle gives away a free kick for an unfair challenge on Fabian Delph. Barry Bannan takes the direct free kick.
Assist by Zavon Hines.
18:38 Goal scored
Goal! - Nahki Wells - Bradford 1 - 0 A Villa Nahki Wells gets on the score sheet with a goal from deep inside the penalty box to the bottom right corner of the goal. Bradford 1-0 Aston Villa.
Outswinging corner taken right-footed by Gary Jones, Zavon Hines takes a shot. Blocked by Ciaran Clark.
Unfair challenge on Stephen Darby by Gabriel Agbonlahor results in a free kick. Matt Duke restarts play with the free kick.
A cross is delivered by Stephen Darby, save made by Shay Given.
Nathan Doyle gives away a free kick for an unfair challenge on Gabriel Agbonlahor. Barry Bannan crosses the ball in from the free kick.
The official flags Christian Benteke offside. Indirect free kick taken by Matt Duke.
Christian Benteke takes a shot. Save by Matt Duke.
Shot by Charles N'Zogbia from 25 yards. Save by Matt Duke.
The ball is crossed by Zavon Hines, save made by Shay Given.
The ball is swung over by Zavon Hines, Ciaran Clark makes a clearance.
Shot by Charles N'Zogbia from 20 yards. Blocked by Carl McHugh. Barry Bannan takes a inswinging corner to the near post, Christian Benteke has a headed effort from close in and clears the bar.
Corner taken left-footed by Barry Bannan from the right by-line, Header from deep inside the area by Christian Benteke goes over the bar.
Nahki Wells sends in a cross, save made by Shay Given.
Charles N'Zogbia takes a shot. Save made by Matt Duke.
Gary Jones produces a right-footed shot from just outside the area that goes wide left of the goal.
Nahki Wells takes a shot. Blocked by Nathan Baker.
This page is best viewed in an up-to-date web browser with style sheets (CSS) enabled. While you will be able to view the content of this page in your current browser, you will not be able to get the full visual experience. Please consider upgrading your browser software or enabling style sheets (CSS) if you are able to do so.