Crewe Alexandra 4 Millwall 2
The contest between the two of the three already relegated sides was blessed with plenty of attacking football.
The visitors started the strongest and Marvin Elliott came close with a looping header before Ben May edged his side in front in the 15 minute.
When Marvin Williams crossed from the left the ball was missed by Steve Foster and the centre-forward reacted the quickest to stab home from close range.
Crewe were struggling for inspiration after Eddie Johnson had whacked the bar with an early volley, but they got back into the game as the half closed.
Johnson levelled things up with a stunning strike from the edge of the box following some neat play down the right-hand side.
Dario Gradi introduced youngsters Michael O'Connor and Nicky Maynard at the start of the second half. Maynard had been on the pitch for less than a minute when he reacted the quickest after O'Connor's shot was deflected into his path. He beat Colin Doyle to tuck the ball away inside the post.
Crewe's lead was threatened when Stuart Tomlinson dropped a corner shortly afterwards and Foster had to clear Elliott's close-range shot off the line. Millwall were back on level terms in the 58th minute after May met Williams' cross with a looping header which caught the far corner of the net, leaving Tomlinson little chance.
But the game was flowing from end to end and Crewe were back in front within a minute when Luke Varney ran through and slotted in from the left of the box.
May was a constant threat for Millwall and came close on two occasions. The second of which a neat chest down and volley which was just inches over the bar.
Youngster O'Connor almost marked his first prolonged taste of senior action with a goal, but his shot trickled past the outside of a post.
Then with seven minutes left, substitute Steve Jones - whose appearance had been greeted with boos as he is set to leave Crewe in the summer - finished off in style with a fourth when his shot wrongfooted Doyle from 12 yards.