Millwall moved to within one goal of a First Division play-off place after an incident-packed 4-1 win over West Ham at the New Den.
Hammers captain Christian Dailly's own goal gave Millwall - for whom Neil Harris earlier saw a penalty saved by Stephen Bywater - a 1-0 half-time lead in the London derby clash.
The second half was less than a minute old when half-time substitution Nick Chadwick, on loan from Everton, set up Australian Tim Cahill to stretch the Lions' lead.
Marlon Harewood cut the deficit three minutes later, showing Harris how it was done from the spot after Matthew Lawrence was penalised for handball - scoring his third goal in five days following his brace in the midweek 4-2 home win over Crewe.
Millwall restored their two-goal advantage in the 56th minute, though, with Cahill grabbing his second inside 10 minutes with a fine volley into the top corner.
Things went from bad to worse for West Ham on the hour when they were reduced to 10 men after Bywater was sent off for a professional foul on Harris.
Czech Pavel Srnicek came on to replace Matthew Etherington, Cahill stepped up to try to claim his hat-trick but became the second Millwall player to miss from
the spot.
Chadwick, who has been signed on loan from Everton for the second time this season after injury cut his initial spell, crowned his return by netting a fourth with 10 minutes left.
It left West Ham without a win in four games on their travels as they also missed the chance to move into third place.
The two sides cancelled each other out in the opening exchanges but it was Millwall's Andy Roberts who had the first effort on goal in the ninth minute, his shot from the edge of the box failing to find the target.
Millwall, who have now lost just one of their last 10 league games, wasted a glorious chance to take the lead in the 16th minute when Etherington, back from injury, fouled Paul Ifill but Bywater guessed correctly to turn away Harris' spot-kick.
The visitors responded to the let-off and came close to opening the scoring themselves 10 minutes later. Ifill fouled Nigel Reo-Coker and from 35 yards Kevin Horlock struck a fierce free-kick which crashed against the crossbar.
Moments later Horlock was in the thick of the action again as he sent a 25-yard drive inches wide of Andy Marshall's upright.
But Millwall took the lead in the 34th minute through Dailly's blunder.
The Lions were forced to make a change at the break with Danny Dichio replaced by Chadwick. He made an immediate impact as his cross was met Cahill, who headed
home from close range.
Two minutes later, though, West Ham hauled themselves back into the game when Harewood converted from the spot following Lawrence's misdemeanour.
Hammers manager Alan Pardew immediately threw on experienced striker Brian Deane as they tried to salvage something from the game.
But Millwall hit back and regained their cushion with a cracking Cahill volley before any hopes of a comeback were ended on the hour by Bywater's dismissal, Cahill squandering a chance for a hat-trick by missing the resulting spot-kick.
Chadwick capped a day to remember for the Lions by adding a fourth late on.
Teams
Millwall Marshall, Muscat, Lawrence, Ward, Ryan, Ifill,
Cahill, Roberts, Livermore, Harris, Dichio (Chadwick 45).
Subs Not Used: Warner, Wise, Elliott, Sweeney.
Booked: Harris.
Goals: Dailly 34 og, Cahill 46, 56, Chadwick 80.
West Ham Bywater, Repka, Melville, Dailly, Harley, Carrick,
Reo-Coker, Harewood (McAnuff 73), Horlock (Deane 50), Zamora,
Etherington (Srnicek 62).
Subs Not Used: Nowland, Cohen.
Sent Off: Bywater (60).
Booked: Melville.
Goals: Harewood 49 pen.
Att: 14,055
Ref: J Winter (Cleveland).