Ten-man West Ham moved four points clear at the top of the Championship table with a narrow derby win over London rivals Millwall at Upton Park.
The home side had captain Kevin Nolan sent off early on before taking the lead through Carlton Cole's header.
Liam Trotter equalised for Millwall with a stunning effort but Winston Reid put the Hammers back in front with a 20-yard strike into an unguarded net.
Alan Dunne came close for the Lions but Sam Allardyce's men held on.
The league leaders looked set for a stern test when Nolan was given a straight red card for a two-footed lunge on Jack Smith with only nine minutes gone.
Millwall looked to press home their advantage, home goalkeeper Robert Green diving bravely to deny Darius Henderson.
But, just before half-time, Reid headed Mark Noble's free-kick back across goal for Cole to nod home easily.
The home side were nearly 2-0 up shortly after half-time, Juilen Faubert's header coming back off the bar.
The Lions then drew level on 65 minutes, Henderson outmuscling Abdoulaye Faye and playing in Trotter, who volleyed into the roof of the net.
But three minutes later, West Ham were back in front with what proved the winner.
Under a heavy challenge from Faubert, Millwall goalkeeper David Forde could only punch the ball into the path of the on-rushing Reid, who finished first time from outside the area.
Forde claimed a foul, but referee Mick Jones awarded the goal, condemning Millwall to their fifth defeat in six games.
Live Text Commentary
Full Time The final whistle goes and the game is over.90:00 +4:27
Outswinging corner taken from the right by-line by Ryan Mason, Abdoulaye Faye manages to make a clearance.90:00 +1:47
Liam Trotter challenges Gary O'Neil unfairly and gives away a free kick. Robert Green takes the free kick.90:00 +0:30
Ricardo Vaz Te produces a right-footed shot from just outside the penalty box that misses to the left of the goal.89:59
Alan Dunne takes a shot. Robert Green makes a save.89:28
Corner taken right-footed by Ryan Mason from the right by-line to the near post, Ricardo Vaz Te manages to make a clearance.88:05 Substitution
Substitution Carlton Cole goes off and Ricardo Vaz Te comes on.87:06
Inswinging corner taken by Harry Kane from the left by-line, save made by Robert Green.86:36
Corner taken by Ryan Mason from the right by-line, clearance by Gary O'Neil.85:24
Shane Lowry takes the direct free kick.85:24 Booking
Booking Carlton Cole shown a yellow card.85:19
Carlton Cole gives away a free kick for an unfair challenge on Shane Lowry.84:55
Alan Dunne takes a shot. Save by Robert Green.83:05
Free kick awarded for an unfair challenge on Darren Ward by Carlton Cole. Darren Ward restarts play with the free kick.82:04
Harry Kane has a direct shot on goal from the free kick.82:04 Booking
Booking Booking for Abdoulaye Faye for unsporting behaviour.81:37
Unfair challenge on Darius Henderson by Abdoulaye Faye results in a free kick.80:32 Substitution
Substitution Ryan Mason joins the action as a substitute, replacing Liam Feeney.79:53 Substitution
Substitution Gary O'Neil is brought on as a substitute for Julien Faubert.79:33
Effort on goal by Julien Faubert from inside the area goes harmlessly over the bar.
Corner taken by Mark Noble from the left by-line, clearance made by Darius Henderson.76:25
Alan Dunne produces a right-footed shot from long range which goes wide right of the target.75:09 Booking
Booking David Forde receives a yellow card for dissent.70:22
Mark Noble concedes a free kick for a foul on Liam Feeney. Liam Trotter takes the free kick.68:24 Goal scored
Goal! - Winston Reid - West Ham 2 - 1 Millwall Winston Reid grabs a goal from just outside the penalty area to the top right corner of the goal. West Ham 2-1 Millwall.67:28
Matthew Taylor takes the inswinging corner, James Tomkins takes a shot. Harry Kane gets a block in.67:28 Booking
Booking Darren Ward is shown a yellow card for unsporting behaviour.65:26
Darius Henderson provided the assist for the goal.65:26 Goal scored
Goal! - Liam Trotter - West Ham 1 - 1 Millwall Liam Trotter gets on the score sheet with a goal from inside the box to the top right corner of the goal. West Ham 1-1 Millwall.64:21
Free kick awarded for a foul by Matthew Taylor on Nadjim Abdou. David Forde takes the free kick.61:22
Inswinging corner taken by Mark Noble, Foul by Carlton Cole on David Forde, free kick awarded. David Forde takes the free kick.60:39
Foul by Shane Lowry on Julien Faubert, free kick awarded. Joey O'Brien takes the direct free kick.58:42
Foul by Matthew Taylor on Nadjim Abdou, free kick awarded. Nadjim Abdou takes the free kick.55:34
David Forde takes the free kick.55:34 Substitution
Substitution Harry Kane is brought on as a substitute for Scott Barron.55:34
Matthew Taylor challenges Alan Dunne unfairly and gives away a free kick.51:57
Matthew Taylor produces a shot on goal direct from the free kick.51:57 Booking
Booking Shane Lowry booked for unsporting behaviour.51:51
Foul by Shane Lowry on Julien Faubert, free kick awarded.50:23
Inswinging corner taken by Matthew Taylor, save made by David Forde.49:36
Julien Faubert takes a shot.48:53
Robert Green takes the free kick.48:53 Booking
Booking Darius Henderson goes into the book for unsporting behaviour.48:42
Winston Reid fouled by Darius Henderson, the ref awards a free kick.48:20
Unfair challenge on Liam Feeney by James Tomkins results in a free kick. Liam Trotter restarts play with the free kick.47:19
Free kick awarded for an unfair challenge on Shane Lowry by Matthew Taylor. Free kick taken by David Forde.45:01
The second half kicks off.45:01 Substitution
Substitution Jack Collison goes off and Matthew Taylor comes on.45:00 +2:51 Half time
Half Time The ref blows to signal half-time.45:00 +1:28
The assist for the goal came from Winston Reid.45:00 +1:28 Goal scored
Goal! - Carlton Cole - West Ham 1 - 0 Millwall Carlton Cole grabs a headed goal from close in. West Ham 1-0 Millwall.45:00 +0:57
Darren Ward gives away a free kick for an unfair challenge on Carlton Cole. Direct free kick taken by Mark Noble.41:05
Joey O'Brien fouled by Scott Barron, the ref awards a free kick. Free kick crossed by Mark Noble, clearance by Darius Henderson.39:08
Effort on goal by Carlton Cole from deep inside the penalty area misses to the right of the goal.35:47
Corner taken by Liam Feeney from the left by-line, Darius Henderson gives away a free kick for an unfair challenge on Winston Reid. Robert Green takes the direct free kick.35:00
Julien Faubert produces a right-footed shot from close range which goes wide of the right-hand upright.33:25
Liam Trotter fouled by Mark Noble, the ref awards a free kick. Liam Trotter takes the direct free kick.32:12
Free kick awarded for an unfair challenge on Mark Noble by Nadjim Abdou. Mark Noble restarts play with the free kick.29:04
Joey O'Brien takes a shot from just outside the penalty area which clears the crossbar.26:16
Liam Feeney takes a shot. Save made by Robert Green.25:32
Corner taken right-footed by Liam Feeney.22:12
Darius Henderson fouled by Winston Reid, the ref awards a free kick. Free kick taken by Jack Smith.18:13
Carlton Cole challenges Alan Dunne unfairly and gives away a free kick. David Forde takes the free kick.16:21
Unfair challenge on Andrew Keogh by Jack Collison results in a free kick. Alan Dunne takes the direct free kick.15:22
Scott Barron challenges Julien Faubert unfairly and gives away a free kick. Mark Noble sends in a cross, James Tomkins takes a shot. Save by David Forde.13:52
Corner taken by Liam Feeney from the left by-line to the near post, clearance made by Carlton Cole.12:33
Darius Henderson is ruled offside. Robert Green takes the free kick.8:27
Scott Barron takes the free kick.8:27 Dismissal
Dismissal Kevin Nolan dismissed for serious foul play.8:18
Kevin Nolan gives away a free kick for an unfair challenge on Jack Smith.7:42
Free kick awarded for a foul by Carlton Cole on Jack Smith. David Forde takes the direct free kick.6:55
Inswinging corner taken left-footed by Scott Barron played to the near post, Robert Green makes a save.6:03
Alan Dunne fouled by Mark Noble, the ref awards a free kick. Direct free kick taken by Darren Ward.4:42
Darius Henderson challenges Abdoulaye Faye unfairly and gives away a free kick. Winston Reid restarts play with the free kick.4:27
Julien Faubert takes a shot. David Forde makes a save.4:04
Mark Noble takes a inswinging corner from the left by-line played to the near post.3:26
Shot from long range by Jack Smith goes wide of the left-hand upright.2:07
Corner taken by Jack Collison from the right by-line, Headed effort from deep inside the penalty area by Carlton Cole goes harmlessly over the crossbar.0:19
Corner taken by Scott Barron, Headed effort from deep inside the penalty area by Alan Dunne misses to the left of the goal.0:00
The referee starts the match.
Live data and text provided by our data suppliers