West Ham fought back from two goals down to draw 2-2 with Millwall in their first meeting since 2012, denying the hosts victory in a fiercely contested London derby. Millwall led at half-time through Caleb Taylor and Camiel Neghli before second-half goals from Mohamadou Kanté and Konstantinos Mavropanos brought West Ham level.

The match was played under a significant police presence. The Metropolitan Police had 400 officers on duty and established a security operation around parts of London because of concerns about a repeat of violence associated with previous meetings. The Guardian reported no immediate trouble, while the match itself remained tense without producing a repeat of that disorder.

Millwall made the stronger start and took the lead in the 16th minute. Lyndon Dykes’s long throw caused confusion in the West Ham penalty area, and after Mads Hermansen saved Mark Sykes’s close-range attempt, Taïryk Arconte returned the loose ball across goal. Taylor finished at the far post.

West Ham struggled to create opportunities before the interval. The Guardian reported that the visitors did not touch the ball inside the Millwall penalty area until the 33rd minute, while Hermansen tipped a long-range Sykes effort onto the crossbar in first-half stoppage time. Millwall then doubled their advantage when another Dykes throw fell to Neghli, who scored.

West Ham manager Nuno Espírito Santo introduced Kanté and Pablo Felipe at half-time, and the visitors improved. Kanté pulled one goal back in the 74th minute with a low drive into the corner after Millwall goalkeeper Filip Marschall had earlier denied Pablo at close range.

Mavropanos completed the comeback with 10 minutes remaining, heading in from Manor Solomon’s cross. West Ham then appeared the more likely side to win, but Kanté was dismissed late for pulling back Kyrell Lisbie as he ran through on goal. West Ham, who began the match top of the Championship and seeking a fifth consecutive win, had to settle for a point.