Millwall 0-2 Swansea
Darren Pratley and Stephen Dobbie struck to keep Swansea City's slim automatic promotion hopes alive while ending Millwall's play-off bid.
Dobbie found Pratley in space to break the deadlock on the half-hour mark as the Swans midfielder fired his 11th goal of the season off the post.
Dobbie doubled the lead just after the break beating keeper David Forde with a low strike from just inside the box.
James Henry and Hameur Bouazza forced saves from Swans keeper Dorus De Vries.
But Millwall could not break through meaning hopes of back-to-back promotions for Kenny Jackett's side are over as they can no longer catch Nottingham Forest who sit in the last play-off place.
Fourth-place Swansea had already booked their play-off place and their first win in six away games still keeps Brendan Rodgers' men in with a chance of catching Cardiff and Norwich in the automatic promotion race should both sides slip up on Monday.
Swansea's pursuit of the third is also important if leaders Queens Park Rangers - who were promoted at Watford on Saturday - are found guilty at an FA hearing this week for breaching league rules over the signing of Alejandro Faurlin and incur a points deduction.
Should all that happen, it would leave Swansea going into the final day of the regular season against already relegated Sheffield United still in the hunt for automatic promotion.
Millwall started brightly at The Den and put Swansea under early pressure, but as soon as the visitors got their passing game together, Rodgers' men took control.
Luke Moore had the Swans' first chance as he picked up Nathan Dyer's pass on the edge of the box before firing well over.
And two minutes later, Dyer cut inside Scott Barron on the right and curled a left-foot shot towards the top corner which Lions stopper Forde had to stretch to turn away at the far post.
Millwall had early chances but the visitors were allowed to compose themselves from before taking the lead on the half-hour.
Dobbie easily cut through the midfield and found Pratley in acres of space to power home a low drive off the post.
Millwall pushed for a leveller but only Tamika Mkandawire forced De Vries into a save from 12 yards.
Jackett threw on Bouazza at the restart for the ineffective John Marquis in a bid to kick some life into his side.
But it looked to have little effect as Swansea controversially doubled their lead within two minutes.
Millwall's Jack Smith was on the floor on his edge of the area after clashing heads with Swans striker Moore but referee Michael Oliver allowed play to continue and Dobbie skipped into the box and fired beyond Forde.
That finally sparked the hosts into life and they had a succession of chances to get back into the game and avoid a first home defeat since 19 February.
First James Henry stung De Vries' fingers with a fizzing shot which the Dutchman could only parry.
And when the Swans failed to clear their lines, Andros Townsend found Steve Morison at the far post but the Wales international sent his header into the side-netting.
Swansea were under pressure and Bouazza launched a fierce 30-yard at De Vries who once again parried the ball away.
But once Rodgers' Swansea weathered the storm, they comfortably held on to seal their first victory at Millwall since March 1930 and record their 20th clean sheet of the season.