Match ends, Millwall 1, Coventry City 2.
Coventry secured their first win in five games to leapfrog out-of-form Millwall in the Championship table.
The opener arrived when Jordan Shipley’s shot cannoned back off the post and was diverted in by Lions defender Jake Cooper after 20 minutes.
Gustavo Hamer stretched the lead six minutes later, firing home after his initial free-kick was blocked.
A foul on Troy Parrott allowed Jed Wallace to halve the deficit from the penalty spot but namesake Murray Wallace was sent off in stoppage time for a second yellow card as Coventry held on.
Coventry were without a goal or win in four games going into this fixture and the omens did not look good when joint top-scorer Matt Godden was forced off with an injury after only 15 minutes.
But the Sky Blues went ahead five minutes later when Shipley’s shot struck the post and rebounded against retreating Lions defender Cooper, who could not stop it going over the line.
Hamer extended the lead from just outside the penalty area. The midfielder’s initial free-kick was blocked by the wall but the rebound came back to him and he fired a deflected shot past the helpless Bartosz Bialkowski.
Millwall failed to register a single shot at goal in the first half, prompting Lions boss Gary Rowett to make two changes at the break, introducing Scott Malone and Troy Parrott for Jon Dadi Bodvarsson and Mason Bennett.
However, they had little immediate impact and Coventry almost scored seconds after the restart when Shipley hit the post.
The hosts eventually called Ben Wilson into action in the Coventry goal after 50 minutes but he was comfortably behind Shaun Williams’ shot, and Tom Bradshaw volleyed over soon after.
Millwall were given a lifeline with 16 minutes remaining when half-time substitute Parrott was brought down in the penalty area by Dom Hyam, allowing Wallace to halve the deficit with his sixth goal of the season.
But their chances of salvaging a point evaporated when Murray Wallace was dismissed in second-half injury time, with defeat meaning the Londoners drop to 17th, with Coventry moving a place above them.
- 12RomeoSubstituted forBureyat 86′minutes
- 3M WallaceBooked at 90mins
- 19WoodsBooked at 45mins
- 6WilliamsSubstituted forSmithat 86′minutes
- 7J Wallace
- 9BradshawSubstituted forZohoreat 68′minutes
- 20BennettSubstituted forMaloneat 45′minutes
- 22BödvarssonSubstituted forParrottat 45′minutes
- 2ØstigardBooked at 90mins
- 26ShipleySubstituted forGilesat 67′minutes
- 24GoddenSubstituted forBiamouat 15′minutes
- 29Da Costa
Second Half ends, Millwall 1, Coventry City 2.
Corner, Millwall. Conceded by Leo Østigard.
Attempt blocked. Kenneth Zohore (Millwall) right footed shot from the centre of the box is blocked. Assisted by Matt Smith with a headed pass.
Foul by Gustavo Hamer (Coventry City).
Ryan Woods (Millwall) wins a free kick in the defensive half.
Corner, Coventry City. Conceded by Jake Cooper.
Attempt blocked. Gustavo Hamer (Coventry City) left footed shot from the centre of the box is blocked. Assisted by Maxime Biamou.
Second yellow card to Murray Wallace (Millwall) for a bad foul.
Callum O’Hare (Coventry City) wins a free kick on the right wing.
Foul by Murray Wallace (Millwall).
Leo Østigard (Coventry City) is shown the yellow card.
Maxime Biamou (Coventry City) wins a free kick on the right wing.
Foul by Tyler Burey (Millwall).
Substitution, Millwall. Tyler Burey replaces Mahlon Romeo.
Substitution, Millwall. Matt Smith replaces Shaun Williams.
Corner, Coventry City. Conceded by Bartosz Bialkowski.
Attempt saved. Callum O’Hare (Coventry City) right footed shot from the centre of the box is saved in the bottom left corner. Assisted by Maxime Biamou.
Gustavo Hamer (Coventry City) wins a free kick in the defensive half.
Foul by Shaun Williams (Millwall).