Match ends, Sheffield Wednesday 2, Millwall 1.
Jordan Rhodes scored his first league goal since March as Sheffield Wednesday overcame battling Millwall, who had Jake Cooper sent off in stoppage time.
The Owls led when Adam Reach slotted in Morgan Fox's cross but Millwall were level as the lurking Tom Elliott turned in Fred Onyedinma's blocked effort.
Rhodes headed in Ross Wallace's corner to restore the lead before half-time.
The Wednesday striker also hit the post late on with a header before Millwall's Cooper was shown a second yellow.
Victory ended the hosts' three-match winless run and saw them earn all three points for only the second time since 12 September, after four losses in their previous six games.
Defeat for Millwall was their third in five matches, but they did apply some pressure in the second half after forward Lee Gregory was brought on.
Both sides remain in mid-table, but the Owls - in 14th - are just three points below the top six, with Millwall three points further back.
Sheffield Wednesday manager Carlos Carvalhal:
"It's important for strikers to score goals and when they score after a long time they get more confidence.
"It (Jordan Rhodes' goal) was an important goal at an important time. It's important for his confidence, we have worked on some things with him in the week and the answer from him was good.
"It was important after the last few weeks to win. We have had games where we should have taken a minimum five points, but we haven't.
"It was important to win after everything and that is the word we have said in the dressing room - win."
Millwall manager Neil Harris:
"I think Sheffield Wednesday were excellent for 20 minutes, I think we helped them out, and then we got a foothold back in the game.
"I thought we were excellent leading up to their second goal. It's a poor goal to give away, you can't give a player like Jordan Rhodes time in the box.
"It sort of deflates us, the lads were disappointed, but the second half we were excellent."
- 33WallaceSubstituted forLeeat 71'minutes
- 14HooperSubstituted forFletcherat 79'minutes
- 7RhodesSubstituted forJonesat 87'minutes
- 4van Aken
- 18Lucas João
- 35CooperBooked at 90mins
- 3MeredithSubstituted forO'Brienat 73'minutes
- 14J Wallace
- 19ElliottSubstituted forMorisonat 80'minutes
- 10OnyedinmaSubstituted forGregoryat 66'minutes
- James Linington
- Shots on Target
Second Half ends, Sheffield Wednesday 2, Millwall 1.
Corner, Sheffield Wednesday. Conceded by Shane Ferguson.
Second yellow card to Jake Cooper (Millwall) for a bad foul.
Barry Bannan (Sheffield Wednesday) wins a free kick in the attacking half.
Foul by Jake Cooper (Millwall).
Attempt blocked. George Saville (Millwall) left footed shot from outside the box is blocked.
Attempt missed. Steven Fletcher (Sheffield Wednesday) header from the left side of the six yard box is close, but misses to the left. Assisted by Kieran Lee with a cross.
Steven Fletcher (Sheffield Wednesday) wins a free kick in the defensive half.
Foul by Shaun Hutchinson (Millwall).
Morgan Fox (Sheffield Wednesday) wins a free kick in the attacking half.
Foul by Steve Morison (Millwall).
Attempt saved. Jacob Butterfield (Sheffield Wednesday) left footed shot from outside the box is saved in the bottom left corner. Assisted by Liam Palmer.
Substitution, Sheffield Wednesday. David Jones replaces Jordan Rhodes.
Morgan Fox (Sheffield Wednesday) wins a free kick in the defensive half.
Foul by Steve Morison (Millwall).
Attempt missed. Steven Fletcher (Sheffield Wednesday) left footed shot from outside the box is close, but misses to the right. Assisted by Kieran Lee.
Substitution, Millwall. Steve Morison replaces Tom Elliott.
Jordan Rhodes (Sheffield Wednesday) hits the left post with a header from the centre of the box. Assisted by Morgan Fox with a cross.
Substitution, Sheffield Wednesday. Steven Fletcher replaces Gary Hooper.