Paul Anderson rescued a point for the Swans with a late equaliser in a thrilling encounter at The Den.
Jason Scotland had fired the Swans into a first-half lead only for Roberto Martinez's side to fall behind midway into the second-half when Zak Whitbread and Alan Dunne put Millwall 2-1 up.
But it was Anderson who came to Swansea's rescue 13 minutes from time with an equaliser that stretches their unbeaten run to eight games and moves them up a place to fourth with a game in hand.
Millwall: Pidgeley, Dunne, Frampton, Fuseini, Robinson, Shaw, O'Hara, Hodge, Alexander, Brkovic, Simpson. Subs: Day, Whitbread, Bakayogo, Barron, Gaynor.
Swansea City: De Vries, Rangel, Austin, Lawrence, Monk ©, Britton, Pratley, Robinson, Anderson, Butler, Scotland. Subs: O'Leary, Tate, Orlandi, Duffy, Knight.
Ref: Rob Shoebridge
Swans boss Roberto Martinez made two changes to the side that battled back with 10 men to record a 1-1 draw with Gillingham at the Liberty Stadium last Friday.
Kevin Austin came in as a straight replacement for the injured Marcos Painter (foot), while Andy Robinson started in place of Warren Feeney who started a three-match ban following his dismissal against the Gills.
The selection of Robinson pointed to a reshuffle for Roberto with Jason Scotland up front as the central striker with support from a talented five-man midfield.
Swansea, who hadn't won at Millwall since 1930, went in search of a fourth consecutive away win in an unbeaten run of seven games that could take them back to the top of League One.
They faced a Millwall side who appointed former Swans boss Kenny Jackett as their new manager this afternoon.
Jackett was not expected to be at The Den tonight, however, taking up his post later this week.
Millwall's caretaker management team of Richard Shaw and former Swans striker Colin West remained in charge for the last time with a side ravaged by injury.
Every available fit senior player was named in the squad in addition to rookie Ross Gaynor who has just returned from a loan spell at Fisher Athletic.
The Lions' casualty list included Danny Spiller (hernia), Danny Senda (hamstring), Neil Harris (achilles), Will Hoskins (hamstring), Ryan Smith (knee), Chris Hackett (cruciate), Dave Brammer (cartilage), Ben May (ankle), Tom Brighton
Match action
Millwall, as expected, applied the early pressure as the home side. But Swansea kept their cool and started to build up play well as Robinson and Tom Butler probed for an opening.
It was Swans 'keeper Dorus de Vries who made the first save, however, as Brian Hodge was given too much room on the edge of the area to get his shot in which the Dutch stopper did well to save with 11 minutes gone.
Swansea were ahead in the 18th minute though as Jason Scotland grabbed his eighth of the season. Anderson latched on to a Darren Pratley header and used his electric pace to race clear and fire in a low shot which Pidgeley failed to hold and Scotland was perfectly placed to pounce.
The lead was nearly surrendered two minutes later when de Vries was forced to tip over a shot from Brkovic with a timely reminder that there was still a long way to go.
Although Swansea weren't having it all their own way, they were still looking the better side, especially going forward, as Roberto was forced into his first substitution with 33 minutes gone as Kristian O'Leary came on for Robinson who looked to have picked up a slight knock.
Millwall were also forced into a change as Zak Whitbread replaced the injured Richard Shaw who had to watch from the bench as his side wasted a glorious chance to equalise in the 39th minute when Hodge blazed a corner over the bar from three yards out when it would have been easier to score.
Millwall had the impetus now going into the interval as Swansea were forced onto the defensive with Gary Alexander forcing de Vries into a save from a long range effort.
Half-time: Millwall 0 Swans 1
Neither side made any changes at the start of the second half which started scrappily.
It was the lively Butler who created the first chance of the half when he cut inside before finding Anderson in support. But the Liverpool loan signing fired wide.
The Millwall fans were starting to get frustrated as their side shared possession with the Swans without finding a cutting edge.
But that all changed 13 minutes into the second half when Zak Whitbread found himself unmarked inside the six yard box from a corner to head beyond de Vries.
With Millwall on top, Roberto sent on Darryl Duffy for Leon Britton in the 69th minute as Swansea reverted to a more orthodox 4-4-2.
But no sooner had Duffy come on, his side were 2-1 down when Austin was adjudged to have handled the ball inside the area on the advice of his linesman. Swansea were still furious when Alan Dunne blasted the penalty beyond de Vries with 70 minutes gone.
With the game looking as if it was slipping away, the Swans grabbed an equaliser in the 77th minute as Scotland picked out Paul Anderson after a slick build up to fire home his eighth of the season.
It was Swansea who were looking for the winner now as Andrea Orlandi came on as Swansea's final substitute for Butler with seven minutes remaining, with O'Leary, Scotland and Darren Pratley all trying their luck to no avail.
Millwall weren't prepared to settle for a point either as de Vries stuck out a leg to deny Fuseini with a great reaction save.
And they should have won it in injury time when a great cross from Jay Simpson saw Alexander head a glorious chance wide from six yards.



















