League Two Stevenage produced an incredible late comeback to stun Premier League Aston Villa at Villa Park and reach the FA Cup fourth round.
The visiting players and manager Steve Evans celebrated with their supporters at full-time after two goals in the final two minutes clinched a magnificent victory.
Substitute Dean Campbell fired in a superb 90th-minute winner after Jamie Reid's equaliser from the penalty spot - the spot-kick awarded after last man Leander Dendoncker was shown a straight red card for bringing down Campbell.
Morgan Sanson's first goal for Villa had given Unai Emery's side a half-time lead over a side ranked 59 places below them in the football pyramid.
But the hosts, despite their overall superiority, were unable to extend their advantage and they were made to pay in a remarkable conclusion to the match.
Fourth tier Stevenage's reward is a trip to Championship outfit Stoke City in the fourth round, which takes place from 27 to 30 January.
Villa unravel as Stevenage cause huge upset
For 84 minutes, it all appeared rather straightforward for Aston Villa.
But their bid to end their worst ever FA Cup losing run - which extends to an eighth match - unravelled from the moment Dendoncker was dispossessed on the edge of his own box and grabbed the shirt of Campbell.
Referee Graham Scott appeared to initially award a free-kick but then produced a red card and pointed to the spot, allowing a video assistant referee review to confirm the penalty.
Reid held his nerve to send Robin Olsen the wrong way and put Stevenage on course for a replay - a feat which would have been a fantastic achievement on its own.
But the League Two side were not done yet and some quick thinking from Jake Reeves to pass his corner to Campbell resulted in the 21-year-old Scot drilling a shot into the bottom corner and sending the away fans into raptures.
Villa have now progressed from just one FA Cup tie since reaching the 2015 final. Stevenage, meanwhile, are the first fourth tier side to beat a Premier League team in an away FA Cup tie for four years.
Wasteful Villa made to pay
A manager with a rich history in cup competitions, four-time Europa League winner Emery made his intentions clear this week as he announced he was preparing his side for this match with the objective of "winning the FA Cup".
Five years after he joined Barcelona in a £142m move from Liverpool in January 2018, Brazilian Philippe Coutinho started among eight changes from Villa's midweek Premier League draw with Wolves.
The hosts dictated from the start - they ended the match having averaged 78.6% possession - but Douglas Luiz's long-range effort was the only test for goalkeeper Taye Ashby-Hammond before Stevenage offered their first warning.
Luke Norris was unlucky to marginally mistime his run before he provided a great assist to set up Danny Rose for what the visitors momentarily believed was a shock opener.
An intricate passing move produced Villa's opener, Ings teeing up Frenchman Sanson for his first goal for the club, but Stevenage stuck to their task and almost had a stunning equaliser when Norris skimmed the top of the crossbar with an excellent curled attempt.
They continued to defend resolutely as Villa increased the pressure after the break.
Perhaps too keen to impress in his first start under Emery, the misfiring Coutinho left the field after 65 minutes, having had a match-leading five attempts but landing just one on target.
There had been little to suggest the match would end as it did. After all, Stevenage scored with their only two shots on target. But what unfolded will live long in the memory of the 3,000 travelling fans present to witness a truly memorable fightback.
Line-ups
Aston Villa
Formation 4-3-3
25Olsen
2Cash16Chambers20Bednarek17Augustinsson
8Sanson32Dendoncker6Douglas Luiz
31Bailey9Ings23Coutinho
25Olsen2CashSubstituted forYoungat 71'minutes16Chambers20Bednarek17AugustinssonSubstituted forDigneat 81'minutes8SansonSubstituted forJ Ramseyat 67'minutes32DendonckerBooked at 85mins6Douglas Luiz31Bailey9IngsSubstituted forWatkinsat 72'minutes23CoutinhoSubstituted forBuendíaat 66'minutesSubstitutes
1E Martínez5Mings10Buendía11Watkins18Young27Digne41J Ramsey44Kamara72YoungStevenage
Formation 5-3-2
12Ashby-Hammond
2Wildin6Sweeney15Vancooten5Piergianni3Clark
8Taylor4Reeves11Roberts
32Rose9Norris
12Ashby-Hammond2Wildin6Sweeney15VancootenSubstituted forBostwickat 83'minutes5Piergianni3ClarkSubstituted forCampbellat 63'minutes8TaylorSubstituted forSmithat 68'minutes4Reeves11Roberts32RoseSubstituted forReidat 63'minutes9NorrisSubstituted forAmooat 67'minutesSubstitutes
1Chapman10Campbell14Smith18Bostwick19Reid24AmooReferee:Graham ScottAttendance:32,343Live Text
Match ends, Aston Villa 1, Stevenage 2.
Second Half ends, Aston Villa 1, Stevenage 2.
Offside, Stevenage. Michael Bostwick tries a through ball, but Jordan Roberts is caught offside.
Robin Olsen (Aston Villa) wins a free kick in the defensive half.
Foul by Jordan Roberts (Stevenage).
Attempt blocked. David Amoo (Stevenage) right footed shot from outside the box is blocked. Assisted by Jordan Roberts.
Attempt missed. Leon Bailey (Aston Villa) left footed shot from outside the box is high and wide to the left following a set piece situation.
Leon Bailey (Aston Villa) wins a free kick on the right wing.
Foul by Luther Wildin (Stevenage).
Goal! Aston Villa 1, Stevenage 2. Dean Campbell (Stevenage) left footed shot from the right side of the box to the bottom right corner. Assisted by Jake Reeves following a corner.
Corner, Stevenage. Conceded by Douglas Luiz.
Goal! Aston Villa 1, Stevenage 1. Jamie Reid (Stevenage) converts the penalty with a right footed shot to the bottom left corner.
Leander Dendoncker (Aston Villa) is shown the red card.
Penalty conceded by Leander Dendoncker (Aston Villa) after a foul in the penalty area.
Penalty Stevenage. Dean Campbell draws a foul in the penalty area.
Attempt missed. Leon Bailey (Aston Villa) left footed shot from outside the box is just a bit too high. Assisted by Emiliano Buendía.
Substitution, Stevenage. Michael Bostwick replaces Terence Vancooten.
Substitution, Aston Villa. Lucas Digne replaces Ludwig Augustinsson because of an injury.
Offside, Stevenage. Dean Campbell tries a through ball, but Luther Wildin is caught offside.
Delay over. They are ready to continue.