Millwall suffered final-day disappointment as Kieffer Moore’s late goal sent them to a 1-0 defeat at Bournemouth and ended their play-off dreams.
Gary Rowett’s side went into their last Sky Bet Championship match of the season needing a win and hoping other results went their way to seal a top-six finish.
But despite a spirited effort they came up just short as they were unable to break down a Cherries side still putting on a display despite securing promotion to the Premier League in midweek.
There was little choice for Millwall at the start than to concentrate only on what they could do – and that meant starting committed, though not gambling too much and leaving themselves exposed at the back.
The Cherries were the quickest to settle into an attacking rhythm and Jaidon Anthony looped the first attempt on goal just wide as the promoted team began brightly.
Robbie Brady and Dominic Solanke also saw efforts from the edge of the area drift across the face of goal as Bournemouth made most of the early running.
But as news drifted around the Vitality Stadium of Middlesbrough’s struggles, so Millwall began to gain a footing in the match.
Oliver Burke and Benik Afobe started to move the home defence around and Rowett’s side started to show signs they were in with a sniff of getting the result they so desperately needed.
And on 32 minutes the South Londoners wasted a glorious chance to get themselves ahead.
George Saville skipped down the left and whipped in a cross that found captain Jake Cooper unmarked arriving at the far post, but with the goal at his mercy he could only loop a header two yards over the crossbar.
There was little option but to start going for it after the break, and Millwall appealed for a penalty in the 53rd minute when Saville tumbled under a Nat Phillips challenge, but referee Andre Marriner was right to wave them away.
As Millwall pushed forward, so they became more vulnerable to Bournemouth on the break, and Solanke was only inches away from getting on the end of Jordan Zemura’s low cross.
Zemura was growing in threat bursting forward from left-back, and on 62 minutes his run looked to have set up Emiliano Marcondes to score shooting low into the bottom corner, only for an offside call to rule the goal out.
Saville was looking one of Millwall’s biggest threats, and the midfielder sent in a 25-yard volley which Mark Travers saved low, and the keeper was back at it again on 73 minutes to deny Burke at the near post.
Rowett threw on more attacking threat from the bench in the shape of Jed Wallace and Tom Bradshaw, but it was Bournemouth next to go close as Solanke just failed to touch home Adam Smith’s low cross.
Millwall were taking more and more risks, and on 81 minutes they were made to pay. Philip Billing’s quick throw released fellow substitute Moore to run clean through on goal and slot home.