Match ends, Wolverhampton Wanderers 4, Millwall 2.
Wolves beat already relegated Millwall but missed out on the Championship play-offs on goal difference.
Despite two Nouha Dicko goals, Kenny Jackett's side failed to capitalise on slip-ups by Ipswich and Derby.
Millwall netted through Aiden O'Brien and debutant Jamie Philpot, either side of Wolves' third goal from defender Ethan Ebanks-Landell.
Bakary Sako then scored in injury time, but Wolves were left seventh in the table on 78 points.
Wolves had already gone close several times, most notably when visiting goalkeeper David Forde saved at close range from Rajiv van La Parra, when they finally took the lead on 20 minutes.
Sako's mazy run into the box was thwarted but Dicko pounced on the loose ball to score from eight yards.
A 1-0 half-time lead was not enough for the home side, knowing that they would need at least for goals to catch either Ipswich or Brentford above them.
It looked more promising when Dicko's solo run on the edge of the Millwall box led to him cutting square to his right before blasting in a stunning right-foot shot from 18 yards.
But, within two minutes, O'Brien had pulled one back from close range.
Ebanks-Landell restored Wolves' two-goal lead after Forde had spilled Sako's free kick, but Philpot then struck on his debut for 3-2.
In stoppage time, Sako cut in to drill home from a tight angle on the right, but it was not quite enough.
Wolves head coach Kenny Jackett: "Before the game we knew that getting into the top six looked possible, not probable. We needed quite a number of teams to slip up and we knew that it would be a long shot.
"But we had to keep our eye on the ball and win the game, and it was a good performance. I was very pleased with the players.
"Things didn't work out for us but we wanted to send the fans home optimistic for next year."
Millwall manager Neil Harris: "There will be discussions with players regarding contract situations.
"We have got over 20 players out of contract and there might be a couple that will be in my thoughts for next year, but there will be a hell of a lot that won't be.
"The biggest thing is we are not accepting what has happened this year and saying we will go down, rebuild and go again."
- 17van La ParraSubstituted forPriceat 64'minutes
- 35NelsonBooked at 50mins
- 21HardingBooked at 69mins
- 7MartinSubstituted forPhilpotat 80'minutesSubstituted forPaveyat 89'minutes
- 23PowellSubstituted forCowan-Hallat 72'minutes
- Mark Haywood
- Shots on Target
Second Half ends, Wolverhampton Wanderers 4, Millwall 2.
Corner, Wolverhampton Wanderers. Conceded by Sid Nelson.
Corner, Millwall. Conceded by Dominic Iorfa.
Attempt blocked. Aiden O'Brien (Millwall) right footed shot from outside the box is blocked. Assisted by Lee Gregory.
Foul by Mark Beevers (Millwall).
Nouha Dicko (Wolverhampton Wanderers) wins a free kick in the attacking half.
Foul by Ed Upson (Millwall).
Kevin McDonald (Wolverhampton Wanderers) wins a free kick on the left wing.
Goal! Wolverhampton Wanderers 4, Millwall 2. Bakary Sako (Wolverhampton Wanderers) left footed shot from a difficult angle on the right to the bottom left corner. Assisted by Benik Afobe following a corner.
Corner, Wolverhampton Wanderers. Conceded by Dan Harding.
Substitution, Millwall. Alfie Pavey replaces Jamie Philpot because of an injury.
Lee Gregory (Millwall) wins a free kick in the defensive half.
Foul by Kevin McDonald (Wolverhampton Wanderers).
Attempt saved. Bakary Sako (Wolverhampton Wanderers) left footed shot from a difficult angle on the left is saved in the bottom left corner. Assisted by Scott Golbourne.
Attempt saved. Bakary Sako (Wolverhampton Wanderers) left footed shot from the left side of the box is saved in the bottom left corner.
Delay over. They are ready to continue.
Delay in match Jamie Philpot (Millwall) because of an injury.
Attempt missed. Mark Beevers (Millwall) header from the centre of the box misses to the right. Assisted by Paris Cowan-Hall with a cross following a corner.
Corner, Millwall. Conceded by Richard Stearman.