Darius Henderson struck in stoppage time as Millwall ended a run of three successive defeats at Burnley.
Liam Trotter gave the visitors a third-minute lead, curling home on the edge of the area.
Ben Mee headed home an equaliser from a 19th-minute corner before Charlie Austin's powerful header put Burnley ahead.
The home side looked to have done enough for the win but Henderson scored a late leveller from 10 yards.
Things started badly for Burnley as they were forced into a last-minute change to their line-up as captain Jason Shackell was injured during the warm-up.
It got worse as Millwall took the lead just three minutes in as Trotter received a pass from Andy Keogh on the edge of the area and the midfielder curled a shot into the far corner.
Burnley immediately set about scoring an equaliser as Ross Wallace, Mee and Chris McCann all had chances.
The home side's leveller arrived midway through the first half when Mee jumped highest to nod home from Junior Stanislas's corner.
In-form Austin scored his eighth league goal of the season to give Burnley the lead before half-time, heading beyond goalkeeper David Forde from Kieran Trippier's cross.
Burnley had the ball in the back of the net again just after the hour mark when Stanislas finished off a one-two move, but it was ruled out for offside.
Substitute Henderson then ensured Millwall a point, before he was denied a last-minute winner by the bar.
Burnley boss Eddie Howe on Stanislas's disallowed goal: "I've not had an explanation from anyone yet. It was a bitter blow for us because I thought we were 3-1 up for a long time and the crowd did as well.
"I have never seen a decision like that in football before in all my life. It was very, very cruel on us because you think that with a two goal cushion it is game over.
"We then had to play the rest of the game out with just one goal in it and it was a psychological blow for us."
Millwall manager Kenny Jackett: "I think [Stanislas's ruled-out strike] was definitely the right decision. I couldn't believe the referee was going to give it. Martin Paterson was clearly offside.
"We showed terrific spirit and we could have won it right at the death. When you have lost three games on the trot, you need a draw to stop the rot and the players should take confidence from that second half.
"I felt in the second half it was an excellent performance and we thoroughly deserved the result. We dominated the second half and created a high number of chances."
Live Text Commentary
Unfair challenge on Shane Lowry by Charlie Austin results in a free kick. Direct free kick taken by David Forde.90:00 +5:23
James Henry has shot on goal from just outside the penalty box which goes wide of the right-hand upright.90:00 +4:56
Darius Henderson takes a shot.90:00 +4:20
Charlie Austin sends in a cross.90:00 +3:14 Substitution
Substitution Ross Wallace leaves the field to be replaced by Cameron Stewart.90:00 +2:13
Assist on the goal came from Shaun Batt.90:00 +2:13 Goal scored
Goal! - Darius Henderson - Burnley 2 - 2 Millwall Darius Henderson grabs a goal from deep inside the penalty box to the bottom right corner of the goal. Burnley 2-2 Millwall.90:00 +1:07
Chris Wood takes a shot.89:49
David Edgar takes a shot. Clearance by Alan Dunne.89:14
Corner from left by-line taken by Junior Stanislas.88:01
Outswinging corner taken right-footed by James Henry from the right by-line.86:44
Effort on goal by Junior Stanislas from just inside the area clears the crossbar.84:44
Nadjim Abdou has an effort at goal from just outside the area which goes wide of the left-hand post.84:34
Corner taken right-footed by James Henry from the right by-line, clearance by Sam Vokes.84:15
Danny Shittu takes a shot from 25 yards. Save by Lee Grant.83:51
The ball is crossed by Shaun Batt.82:54
Shot from just outside the box by Jack Smith misses to the left of the goal.81:41
Free kick awarded for a foul by Darius Henderson on Ben Mee. Lee Grant takes the free kick.81:21
David Forde takes the free kick.81:21 Booking
Booking The referee cautions Sam Vokes for unsporting behaviour.
Sam Vokes concedes a free kick for a foul on Shane Lowry.80:27 Full time
Full Time The referee blows for the end of the match.79:06
Strike comes in from Ross Wallace from the free kick.79:06 Booking
Booking Shane Lowry receives a yellow card.78:08
Free kick awarded for an unfair challenge on Ross Wallace by Shane Lowry.77:17
The referee gives a free kick against Shaun Batt for handball. Lee Grant takes the free kick.76:17 Substitution
Substitution Sam Vokes on for Martin Paterson.74:41 Substitution
Substitution (Millwall) makes a substitution, with Darius Henderson coming on for Andy Keogh.74:27
Andy Keogh produces a right-footed shot from close in which goes wide of the left-hand upright.73:17
Shaun Batt fouled by Dean Marney, the ref awards a free kick. James Henry restarts play with the free kick.72:32
The referee blows for offside against Martin Paterson. Free kick taken by David Forde.72:01
Kieran Trippier takes the direct free kick.72:01 Booking
Booking James Henry is shown a yellow card for dissent.71:43
Foul by Nadjim Abdou on Martin Paterson, free kick awarded.70:39 Substitution
Substitution Chris McCann leaves the field to be replaced by Marvin Bartley.69:56
Shane Lowry takes the direct free kick.69:56 Booking
Booking Ross Wallace receives a yellow card.69:26
Free kick awarded for an unfair challenge on Jack Smith by Ross Wallace.67:56
Jack Smith fouled by Ross Wallace, the ref awards a free kick. Free kick crossed right-footed by James Henry.67:25
Corner taken right-footed by James Henry, Michael Duff makes a clearance.67:10
Inswinging corner taken right-footed by James Henry from the left by-line, clearance by Junior Stanislas.66:41 Substitution
Substitution Scott Malone leaves the field to be replaced by Shaun Batt.64:23
The offside flag is raised against Martin Paterson. David Forde takes the free kick.62:50
Junior Stanislas takes a shot.57:34 Booking
Booking Alan Dunne shown a yellow card.56:54
James Henry takes the outswinging corner, clearance made by David Edgar.55:37 Booking
Booking Ben Mee is cautioned.45:01
The referee gets the second half started.45:01 Substitution
Substitution (Millwall) makes a substitution, with Jack Smith coming on for Paul Robinson.45:00 +33:01 Half time
Half Time The first half comes to an end.42:11
Kieran Trippier provided the assist for the goal.42:11 Goal scored
Goal! - Charlie Austin - Burnley 2 - 1 Millwall Charlie Austin finds the net with a headed goal from just inside the area. Burnley 2-1 Millwall.40:33
Foul by Scott Malone on Ross Wallace, free kick awarded. Michael Duff restarts play with the free kick.39:57
Free kick awarded for a foul by Danny Shittu on Martin Paterson. Free kick taken by Kieran Trippier.39:15
James Henry takes a shot. Save made by Lee Grant.38:36
Alan Dunne gives away a free kick for an unfair challenge on Dean Marney. Free kick taken by Lee Grant.38:16
Shot by Chris Wood. Blocked by David Edgar.37:05
Shot from just outside the box by Kieran Trippier goes over the target.36:45
Corner taken right-footed by Junior Stanislas.36:15
Kieran Trippier takes a shot. Alan Dunne gets a block in.35:32
Andy Keogh is flagged offside by the assistant referee. David Edgar takes the free kick.35:01 Booking
Booking Booking for Dean Marney.34:39
Effort from outside the penalty area by Chris Wood goes wide left of the goal.33:08
Inswinging corner taken by Ross Wallace, David Edgar has an effort at goal from close in which goes wide left of the target.31:46
Junior Stanislas has an effort direct from the free kick.31:46 Booking
Booking The referee books Liam Trotter for unsporting behaviour.31:41
Chris McCann fouled by Liam Trotter, the ref awards a free kick.30:45
Inswinging corner taken right-footed by James Henry from the left by-line, clearance by Dean Marney.29:31
Dean Marney concedes a free kick for a foul on Liam Trotter. A cross is delivered by Shane Lowry, Scott Malone takes a shot. Lee Grant makes a save.28:54
Unfair challenge on Liam Trotter by Ross Wallace results in a free kick. Direct free kick taken by David Forde.27:15
Mishit right-footed shot by Andy Keogh. Lee Grant makes a comfortable save.26:20
Effort from 25 yards by Chris Wood.25:48
Effort on goal by Dean Marney from just outside the area goes harmlessly over the target.25:01
Alan Dunne concedes a free kick for a foul on Dean Marney. Free kick crossed right-footed by Junior Stanislas from left wing, Danny Shittu manages to make a clearance.24:05
James Henry concedes a free kick for a foul on Ben Mee. Direct free kick taken by Lee Grant.23:45
Ross Wallace takes a inswinging corner.23:29
Martin Paterson takes a shot. Danny Shittu gets a block in.23:02
Free kick awarded for an unfair challenge on Ross Wallace by Scott Malone. Free kick taken by Ross Wallace.18:52
Junior Stanislas provided the assist for the goal.18:52 Goal scored
Goal! - Ben Mee - Burnley 1 - 1 Millwall Ben Mee finds the net with a headed goal from inside the six-yard box. Burnley 1-1 Millwall.18:25
Junior Stanislas takes the inswinging corner,18:02
Foul by Shane Lowry on Martin Paterson, free kick awarded. Kieran Trippier takes the free kick.17:23
Shot by Scott Malone. Blocked by Chris McCann.16:59
Inswinging corner taken from the left by-line by James Henry, Michael Duff manages to make a clearance.16:20
Junior Stanislas concedes a free kick for a foul on James Henry. Direct free kick taken by James Henry.15:50
The offside flag is raised against Charlie Austin. David Forde takes the indirect free kick.14:58
Junior Stanislas takes a shot.13:55
Chris Wood is caught offside. Free kick taken by Ben Mee.13:05
Inswinging corner taken by Junior Stanislas, Alan Dunne manages to make a clearance.12:38
Chris McCann takes a shot. Save by David Forde.8:59
Alan Dunne challenges Charlie Austin unfairly and gives away a free kick. Junior Stanislas produces a cross, Close range header by Ben Mee goes over the bar.8:06
James Henry has an effort at goal from outside the area which goes wide left of the target.7:29
Corner taken short by Ross Wallace.5:49
Shot from deep inside the area by Ross Wallace goes over the bar.4:31
Dean Marney produces a right-footed shot from just outside the box that goes wide right of the goal.4:19
Junior Stanislas takes a shot. Blocked by Alan Dunne.2:59
Andy Keogh provided the assist for the goal.2:59 Goal scored
Goal! - Liam Trotter - Burnley 0 - 1 Millwall Liam Trotter gets on the score sheet with a goal from the edge of the penalty area to the top left corner of the goal. Burnley 0-1 Millwall.1:10
Foul by Scott Malone on Dean Marney, free kick awarded. Direct free kick taken by Kieran Trippier.0:00
The ref blows the whistle to start the match.
Live data and text provided by our data suppliers