Brentford lost their 11-match unbeaten run to promotion-chasing Swindon Town in a rip-roaring five-goal thriller.
The Bees fell behind early on but dominated long stages of the first half and levelled through David Hunt.
But Swindon - who will go into the final day of the season with a chance of gaining automatic promotion - struck at the end of the first half and early in the second to take a lead they never relinquished.
Ben Strevens pulled a goal back and although the second period lasted nearly an hour due to a sickening-looking injury to Pim Balkestein The Bees could not find an equaliser.
Swindon started brightly and it was no surprise when they went ahead early on.
Jonathan Douglas had already curled a shot narrowly over, Billy Paynter had seen a shot tipped over by Wojciech Szczesny and Gordon Greer headed wide before the hosts took a ninth minutes lead.
Jon-Paul McGovern spread the play with a delightful pass that picked out Danny Ward, he skipped past Karleigh Osborne and cut the ball back to Paynter, who slotted it home from eight yards.
The goal seemed to wake Brentford up, and they proceeded to take control of the match.
Toumani Diagouraga came within a whisker of equalising with a volley from 18 yards that flew inches wide and Strevens bobbled a shot wide soon after.
Balkestein saw a header saved while at the other end Ward curled an effort inches wide with his left foot and then saw another shot with his right saved by Szczesny.
Sam Wood should have ended a fine Brentford move with an equaliser - Charlie MacDonald fed Hunt, he got to the by-line and pulled it back to Wood six yards out but he screwed his shot wide.
The Bees, however, did not have to wait long to level it up.
Strevens, Wood and MacDonald combined on the left and the latter fed Hunt, his first shot was well saved by David Lucas but when it bounced back to him he arrowed a left footed effort into the corner.
But that only served to stun Swindon back into action - Lecsinel Jean-François headed wide and Balkestein made an important block from another Paynter shot while at the other end Lucas had to be quick to rush out and save at the feet of MacDonald.
Seconds before the break Swindon regained the lead, they worked the ball well on the edge of the box before space was made for McGovern, his low ball eluded everyone in the middle but Ward arrived late to steer it across Szczesny and into the net.
The home side started the second period as they started the first, without creating as many openings and Lucas had to save low to prevent Douglas diverting a Wood cross into his own net.
Lucas had to be alert again to beat Diagouraga to a MacDonald through ball and from the clearance Swindon extended their lead.
The ball was played into the right channel and Frank Nouble raced onto it, his first time cross found Paynter eight yards out, and he twisted his head to steer it past Szczesny and into the corner.
But Brentford hit straight back - Wood did superbly down the left to get in a cross, Jean-François slipped and it took a great tackle from Alan Sheehan to prevent MacDonald scoring, but the ball dropped to Strevens who slotted home.
Paynter headed a McGovern cross wide as Swindon searched for a fourth that would have surely killed it off.
The game was halted late on when Balkestein collided with Charlie Austin in mid-air and went down.
Oxygen and spinal boards were brought on for the Brentford defender, who was stretchered off.
The game was halted for nearly ten minutes and referee Andy Woolmer added 15 minutes of stoppage time.
With their fans increasingly nervous - with results elsewhere going their way - Swindon tried to run the clock down.
But Brentford should have levelled, Marcus Bean fed MacDonald in the inside right channel, he stood up a cross towards the arriving Diagouraga eight yards out but Mark Phillips, playing as an emergency striker tried to acrobatically turn it in and saw his effort land on the roof of the net.
With that The Bees chances, and their unbeaten record, had gone.
Swindon Town: Lucas; Darby, Greer, Jean-François, Sheehan; McGovern, Eaton, Douglas, Ward; Paynter, Nouble (sub Austin 71 mins)
Subs (not used): Smith, Cuthbert, Timlin, Amankwaah, O'Brien, Ferry
Brentford: Szczesny; Foster, Osborne, Legge, Balkestein (sub Bean 90 mins); Hunt, Diagouraga, O'Connor, Wood (sub Phillips 90 mins); MacDonald, Strevens
Subs (not used): Bull, Ferrell, Franks, Blake
Bookings: Legge (35 mins) (fifth of season)
Attendance: 10,465 (860 Bees fans)
By Chris Wickham