Brentford’s came within the width of the crossbar of a place in The Championship only to be cruelly denied and now will have to go through the Play-Offs if they are to clinch promotion from npower League One.
The Bees needed to beat Doncaster Rovers to overtake the visitors and finish second in League One and win promotion to the second tier for the first time since relegation in 1993.
It looked as if the time had come when referee Michael Oliver awarded a penalty in the 94th minute when Toumani Diagouraga was flattened by Jamie McCombe as he went for a high ball.
Marcello Trotta grabbed the ball but smashed the spot kick against the crossbar.
Doncaster broke away, Billy Paynter squared for James Coppinger to roll the ball in, give the visitors a 1-0 win and send them up.
The visitors also clinched the League One title as AFC Bournemouth failed to beat Tranmere Rovers.
Brentford probably did not do quite enough to win the game; they couldn’t break down a resolute Doncaster defence until the late penalty and created few clear cut chances.
Doncaster settled slightly quicker and could have gone ahead within ten minutes when David Cotterill picked up a Chris Brown pass and fired in a shot with the outside of his foot that faded inches past the far post.
In general the first half was everything that would have been expected before the match.
It was tight and evenly matched, largely played in midfield and with Doncaster relishing any physical battle.
More surprisingly, the visitors tried to waste time from the first seconds and Mr Oliver had to speak to the visiting players regularly to get them to speed the game up.
Brentford came closest to taking the lead in the first half when Bradley Wright-Phillips reacted quickest to a Clayton Donaldson nod down, the striker got away a left foot shot that beat Neil Sullivan in the Doncaster goal but bounced away off the post.
There were not many chances in the first period, Tommy Spurr fired a free kick in to a defensive wall and a Wright-Phillips shot was half blocked and then saved at the other end.
Dean Furman had a shot blocked for the visitors and Brentford nearly handed Doncaster a goal when Jake Bidwell’s header had to be palmed way by Simon Moore at full stretch before Shaleum Logan cleared.
Harlee Dean headed wide for The Bees and Moore got down well to a Furman shot before Sullivan saved a curling Wright-Phillips shot.
Moore made a good low stop from Cotterill at the end of the first half and Sullivan saved at the feet of Tom Adeyemi but the teams went in at half time all square, and with all to play for.
Brentford had control in the second half but Doncaster’s well-organised backline was hard to penetrate.
Dean almost made a breakthrough when he met a Harry Forrester corner but Doncaster got bodies in the way and Wright-Phillips had a shot blocked soon after.
Rob Jones headed over for the visitors on a rare foray forward but most of the game was being played with Brentford on the front foot.
Jonathan Douglas had a great chance when a poor Jones clearance fell to him 15 yards out but he lashed his shot over the bar.
Substitute Sam Saunders had a shot deflected wide before Donaldson missed the target with an acrobatic effort.
A Diagouraga shot was blocked as Brentford started to lay siege to the visitors’ goal and a Dean header was saved by Sullivan.
A Saunders shot deflected wide and Adam Forshaw shot over the bar as time started to run out for Brentford.
Paynter missed a chance to win the game for Doncaster when he shot wide at the far post but after Brentford missed their chance, Coppinger converted and Doncaster were up.
Brentford: Moore; Logan (sub Forshaw 64 mins), Dean, O’Connor, Bidwell; Adeyemi, Douglas (sub Trotta 77 mins), Diagouraga; Donaldson, Wright-Phillips, Forrester (sub Saunders 70 mins).
Subs (not used): Gounet, Hodson, Pierre, El Alagui
Bookings: Wright-Phillips (59 mins) (sixth of season), Douglas (74 mins) (tenth of season), Donaldson (89 mins) (sixth of season)
Doncaster Rovers: Sullivan, Quinn, Jones, McCombe, Spurr; Cotterill, Lundstram (sub Keegan 62 mins), Furman, Coppinger; Hume (sub Paynter 77 mins), Brown (sub Syers 83 mins)
Subs (not used): Woods, Husband, Wakefield, Bennett
Bookings: McCombe (33 mins), Lundstram (38 mins), Quinn (75 mins), Cotterill (84 mins), Sullivan (90 mins), Coppinger (90 mins)
Attendance: 12,300 (1,821 away fans)
By Chris Wickham