Both sides took single faltering steps in the right direction at The Den, but neither Crystal Palace nor Millwall looked desperately deserving of their eventual target. This tense but technically dismal derby should mean celebratory Saturdays for the two south London sides, but they are not ending the season with a flourish.
Palace will worry about that more than Millwall. Ian Holloway's side are fifth and a draw, at home against Peterborough on Saturday, should be enough for a play-off place. But even that is not certain given how they are playing. This was their ninth straight winless league game, and with little improvement in their unimaginative performance. They head into the post-season in no form at all, and it is hard to see how they find the form now to make it into next season's Premier League.
Millwall, whose spirit and effort probably warrants another season in the Championship, moved up to three places and two points beyond the relegation zone. They would need Peterborough and Barnsley to win, and Sheffield Wednesday to draw to send them down, and a draw at Derby should be enough to save them anyway.
A victory would have secured Palace or saved Millwall, but neither side ever looked much like taking the three points. Both teams came into the game in dismal form, and it showed. The first half, at least, was fast - this was a high-stakes derby, after all - but entirely lacking in fluency and cohesion. Millwall had won one of their last seven, Palace none of their last eight. It was no surprise those runs continued.
It began as a frantic, furious mess, full of slips, spats and simple errors. Millwall might have had early penalties from a Damien Delaney handball and a Mile Jedinak push, but did not. Given the spaces, chances were inevitable even for poor teams: a deflected Andy Keogh cross found Josh Wright, who shot over, before Glenn Murray escaped Danny Shittu but dragged his shot wide.
There were faint glimpses just before the break that Palace, with their superior players, might just threaten more. Murray ran onto a Dean Moxey long ball but could not control it, Yannick Bolasie even forced a corner, but more often than not Millwall's unapologetic physicality was too much for a Palace team lacking the conviction to take them on.
Palace continued their marginal superiority after the interval, with more of the ball but never really looking like a top-flight team in waiting. Eventually Bolasie decided he would have to do it by himself, ignoring passes and forcing David Forde to leap to keep out his 30-yard shot. Wilfried Zaha tried to change the game too, but this desperate match was impervious to improvement until the end. Palace will need to find far more, though, if they want to be playing in a different division next season.
Millwall (4-4-2) Forde; Dunne, Shittu, Beevers, Lowry; Feeney, St Ledger, Wright, Henry (Woolford, 21); Keogh, Batt (N'Guessan, 72; Trotter, 86). Substitutes not used Maik Taylor, Marquis, Adam Smith, Abdou.
Crystal Palace (4-2-3-1) Speroni; Ward, Gabbidon, Delaney, Moxey; Dikgacoi, Jedinak; Bolasie (Dobbie, 83), Garvan (Williams, 74), Zaha; Murray. Substitutes not used Price, Phillips,, Wilbraham,, Ramage, Moritz.
Referee G Salisbury (Lancashire).