Bristol Rovers ripped up the formbook to score a surprise 4-2 victory over promotion-chasing Millwall.
By half time they were leading 4-1 and Millwall were down to ten men after Gary Alexander had been red carded.
He threw up a hand to keep Rickie Lambert's header from a corner going in but it brought only a short respite for Lambert thumped in the penalty to take him to 27 goals this season.
He had already headed in another of Stuart Campbell's corners as the game expanded around set pieces.
Rovers were always going to have room to build their own attacks with Millwall pressing to add to their impressive run of nine wins out of 13.
They made the most of their chances after seizing the lead from their first corner after 11 minutes when Campbell's low out-swinger was glanced in by Craig Disley.
Free kicks offered the Lions a way back. Alexander headed one onto the roof of the net but Nadjim Abdou provided the 28th minute equaliser after Jason Price had headed on Scott Barron's deadball kick.
Millwall's travelling fans felt this would see their side surge ahead but instead mid-table Rovers hit back with two goals in a little over four minutes from Lambert and Jo Kuffour.
For a time the game took on a dark side and there were some angry moments after Millwall captain Tony Craig was yellow carded for barging over home keeper Steve Phillips.
Without their top scorer Alexander, life was always going to be difficult in the second half for Millwall.
They sacrificed David Martin to bring on striker Neil Harris, who promptly hit the bar and then set up a chance for Price.
It took a superb one-handed dive by Phillips to deny Price and he was even moved to join in the congratulations to the keeper.
Abdou hit a second goal, rebound off Phillips setting up a rather anxious finish for Rovers after their centre-back Steve Elliott was dismissed for a second booking.