Match ends, Millwall 2, Queens Park Rangers 2.
Jermaine Easter's stoppage-time goal earned Millwall a draw in an absorbing London derby after QPR had led twice.
Niko Kranjcar put the visitors ahead when he fired in immediately after the home side were denied a penalty.
A neat finish from Scott McDonald levelled matters before Charlie Austin dinked the ball over Lions keeper David Forde to restore QPR's lead.
However, in the third minute of added time, Easter worked his way into the area and lashed in a shot.
The visitors had only conceded two goals in their previous 10 league games, but their late lapse left them two points behind Championship leaders Burnley, who have played a game more.
R's boss Harry Redknapp's mood was not helped when the ball was thrown at his face during the match, as pictured above.
Kranjcar was a key player for Rangers and he went close early on when his shot hit the post.
Millwall felt they should have had a penalty for an Austin foul on Liam Trotter, but QPR went up the other end and scored through Kranjcar.
The Lions twice went close before equalising shortly after the break when Trotter dispossessed Richard Dunne and cut the ball back for McDonald to slot in.
But Kranjcar set up Austin to score his sixth goal in as many games to put the visitors back in front before Easter's late intervention denied them victory.
Millwall manager Steve Lomas:
"I thought it was no more than the lads deserved, considering the quality that QPR have.
"We hung in there and got a fine result. To come from behind twice is credit to the lads."
QPR assistant manager Kevin Bond:
"I thought we should have won the game. From a possession point of view we controlled the game.
"They always carried a threat and looked like they might get on the end of something."
- 27McDonaldSubstituted forKeoghat 65'minutes
- 6TrotterSubstituted forMorisonat 72'minutes
- 11WoolfordSubstituted forEasterat 81'minutes
- 36O'NeilSubstituted forJenasat 88'minutes
- 23HoilettSubstituted forPhillipsat 84'minutes
- 19KranjcarSubstituted forFaurlinat 74'minutes
- 18Chevantón Espinosa
- Mike Dean
- Shots on Target
Second Half ends, Millwall 2, Queens Park Rangers 2.
Hand ball by Joey Barton (Queens Park Rangers).
Attempt blocked. Charlie Austin (Queens Park Rangers) header from the centre of the box is blocked. Assisted by Jermaine Jenas with a cross.
Goal! Millwall 2, Queens Park Rangers 2. Jermaine Easter (Millwall) right footed shot from the right side of the box to the bottom left corner.
Offside, Queens Park Rangers. Benoit Assou-Ekotto tries a through ball, but Matthew Phillips is caught offside.
Foul by Richard Dunne (Queens Park Rangers).
Jermaine Easter (Millwall) wins a free kick on the left wing.
Corner, Millwall. Conceded by Clint Hill.
Substitution, Queens Park Rangers. Jermaine Jenas replaces Gary O'Neil.
Attempt blocked. Andrew Keogh (Millwall) left footed shot from outside the box is blocked. Assisted by Scott Malone with a cross.
Substitution, Queens Park Rangers. Matthew Phillips replaces Junior Hoilett.
Foul by Joey Barton (Queens Park Rangers).
Nicky Bailey (Millwall) wins a free kick on the left wing.
Substitution, Millwall. Jermaine Easter replaces Martyn Woolford.
Joey Barton (Queens Park Rangers) wins a free kick in the defensive half.
Foul by Nicky Bailey (Millwall).
Attempt saved. Junior Hoilett (Queens Park Rangers) right footed shot from the left side of the box is saved in the top right corner. Assisted by Alejandro Faurlin.
Corner, Queens Park Rangers. Conceded by Paul Robinson.
Foul by Gary O'Neil (Queens Park Rangers).