Match ends, Millwall 1, Reading 0.
Millwall climbed above Reading and out of the Championship relegation zone as Jose Gomes' first game as Royals boss saw his side end a narrow defeat with nine men.
The Lions, who had been winless in eight, led after eight minutes through a fine Jed Wallace free-kick and a minute later the visitors had Tyler Blackett sent off for a dangerous tackle on the goalscorer.
Reading still managed to have the better of possession but struggled to create clear chances in a cagey match.
John Swift went the closest, but his second-half free-kick hit the bar, while Ryan Tunnicliffe, Wallace and Ryan Leonard all went close to adding to Millwall's lead.
But the hosts did not need a clinching second goal for a fifth home win of the season, while Reading's miserable afternoon was compounded when Leandro Bacuna was sent off in the closing stages.
The Royals, who last week sacked boss Paul Clement, slip to second from bottom following a fourth defeat in six matches which takes their winless run to eight.
Millwall manager Neil Harris told BBC Radio London:
"I'm delighted for the football club because getting a victory has been a long time coming.
"It wasn't out best performance but that was a cup final today. It's a massive victory for us against Reading.
"If we had been slightly better with the ball in the final third, we could have got three or four, but I'm not going to moan at my players tonight - the boys were excellent."
Reading manager Jose Gomes:
"Playing 85 minutes with 10 or part with nine, it was a very difficult mission for my players.
"But they fought until the last second and until the last second the game was open, so I'm proud of their attitude, what they showed on the pitch.
"We didn't like the result, we didn't like the red cards and I'm not complaining against the referee, maybe I should complain with my players. We are proud of our attitude and blood that my players showed that they have inside them, they were brave."
- 7J WallaceSubstituted forO'Brienat 76'minutes
- 11FergusonBooked at 77minsSubstituted forSkalakat 89'minutes
- 19ElliottBooked at 38minsSubstituted forMorisonat 57'minutes
- 9GregoryBooked at 53mins
- 25M Wallace
- 6MooreBooked at 67mins
- 24BlackettBooked at 9mins
- 7BacunaBooked at 88mins
- 10SwiftSubstituted forOshoat 82'minutes
- 21MeiteSubstituted forMcClearyat 73'minutes
- 43LoaderSubstituted forBaldockat 63'minutes
- Andy Davies
- Shots on Target
Second Half ends, Millwall 1, Reading 0.
Attempt blocked. Aiden O'Brien (Millwall) right footed shot from the left side of the box is blocked. Assisted by Jake Cooper.
Corner, Millwall. Conceded by Gabriel Osho.
Offside, Millwall. James Meredith tries a through ball, but Aiden O'Brien is caught offside.
Offside, Millwall. Steve Morison tries a through ball, but Aiden O'Brien is caught offside.
Foul by Liam Moore (Reading).
Lee Gregory (Millwall) wins a free kick in the attacking half.
Substitution, Millwall. Jiri Skalak replaces Shane Ferguson.
Leandro Bacuna (Reading) is shown the red card for violent conduct.
Foul by Leandro Bacuna (Reading).
Shane Ferguson (Millwall) wins a free kick in the defensive half.
Foul by Andy Rinomhota (Reading).
Lee Gregory (Millwall) wins a free kick in the defensive half.
Foul by Garath McCleary (Reading).
James Meredith (Millwall) wins a free kick in the defensive half.
Substitution, Reading. Gabriel Osho replaces John Swift.
Attempt missed. Garath McCleary (Reading) left footed shot from outside the box misses to the left. Assisted by Andy Rinomhota.
Andy Yiadom (Reading) wins a free kick in the defensive half.
Foul by Lee Gregory (Millwall).