In a hotly contested London derby, Sam Allardyce's side were reduced to 10 men after just nine minutes when midfielder Kevin Nolan received a straight red card.

Despite their opponents holding a numerical advantage, it was West Ham who took the lead on the stroke of half-time through Carlton Cole.

Millwall mounted a response and levelled proceedings on 66 minutes when Liam Trotter produced an exceptional strike, but parity was to last for just a few moments.

New Zealand defender Winston Reid was the unlikely scorer of the winning goal as West Ham triumphed for the fourth time in a row at home.

They now lead second-placed Southampton by four points on the table, after Nigel Adkins' side drew 0-0 at Birmingham City in the late kick-off.

Defender Daniel Fox was sent off for Southampton with seven minutes to play but they managed to hold on and claim a point.

Leeds United started the post-Simon Grayson era with a convincing 3-0 win at Bristol City - their first win on the road since November.

The hosts were reduced to nine men after just 57 minutes as goals from Robert Snodgrass, Ross McCormack and Luciano Becchio gave caretaker manager Neil Redfearn a win in his first match in charge.

Third-placed Cardiff City were defeated 3-1 at home by Blackpool, who had to come from behind to win all three points.

Joe Mason's goal on the hour mark gave Cardiff the lead but Kevin Phillips struck an equaliser with just 11 minutes left.

Matt Phillips sealed the win for Blackpool with two goals in the final stages to seal victory for Ian Holloway's men.

Michael Chopra scored twice in the final 30 minutes to give Ipswich Town a dramatic 3-2 win at Coventry City, while Watford skipper John Eustace bagged a double in their 2-1 victory against Barnsley.

Will Buckley's injury-time strike handed 10-man Brighton and Hove Albion a 1-0 win against a nine-man Leicester City, Jay Rodriguez scored a late equaliser for Burnley as they drew 1-1 with Peterborough United and Middlesbrough and Crystal Palace played out a goalless draw.

Matches between Doncaster Rovers and Reading, and Portsmouth and Hull City were postponed due to adverse weather conditions.

More to follow