Walsall 2-1 Millwall
Franck Moussa's second-half strike condemned Millwall to a fourth straight League defeat despite a much improved display against Walsall.
The Lions dominated for large spells on a miserable afternoon and were level at half-time after Fred Onyedinma cancelled out former Millwall striker Simeon Jackson's opener only for Moussa to net the winner just minutes into the second period.
Neil Harris made two changes to his starting line-up with Shaun Williams coming in for Calum Butcher and Onyedinma replacing David Worrall, whose partner gave birth just hours before kick-off. Ben Thompson, available again after suspension, had to settle for a place on the bench.
In pouring rain at the Banks's Stadium The Lions started on the front foot and had two corners inside the opening 90 seconds, the second of which was headed wide by Byron Webster.
The defender instigated a neat move after nine minutes when his lofted pass found Mahlon Romeo, who crossed for Steve Morison, but the striker didn't connect cleanly with his strike and Shane Ferguson was unable to keep the ball in play to maintain the attack.
Millwall were inches away from taking what would've been a deserved early lead moments later when Williams tried his luck with a brilliantly inventive quick free-kick from inside the centre circle which flew over keeper Neil Etheridge but rattled against the crossbar before bouncing off the line and away.
Completely against the run of play, however, it was Walsall who opened the scoring on 17 minutes when Franck Moussa headed a cross from the left into the path of Jackson, who finished past Jordan Archer from close range in what was the home side's first meaningful attack of the game.
But that lead only lasted five minutes thanks to an equalising goal from Onyedinma, who was perfectly placed to head Romeo's curling cross past Etheridge from six yards out.
It could've been a complete turnaround on the half-hour mark when Lee Gregory cut inside past James O'Connor before sending the ball through to Morison, who couldn't quite control and shoot under pressure from the keeper. The experienced frontman went to ground but the referee pointed for a goal kick rather than a penalty, though in truth appeals from Millwall players were halfhearted.
The Lions maintained their attacking intent and were again close to going in front when Williams found Ferguson, whose pinpoint delivery from the left was headed narrowly wide by Joe Martin, who rose above Webster to make contact with the cross.
Harris' men survived a scare on 40 minutes when a shot from Kieron Morris was saved by Archer, who quickly had to get to his feet to block a follow-up strike from Jackson inside the six-yard box.
They were not so lucky four minutes into the second-half when Walsall regained the lead thanks to a goal from Moussa, who was quickest to reach a loose ball in the box before firing past Archer after the keeper had made an earlier save.
The Lions had an immediate opportunity to equalise when Gregory found himself through one-on-one with Etheridge but the keeper got a crucial touch the take the ball away from danger. The striker kept possession, though, before teeing up Williams, whose effort was superbly tipped over by the keeper before the visitors had penalty appeals for handball waved away following the resulting corner.
It was another set-piece that nearly saw Millwall level on 68 minutes but Morison's header from a Ferguson corner edged just wide of the right-hand post as Harris' side searched desperately for an equalising goal.
Ben Thompson came on in place of Jimmy Abdou soon after and was immediately involved in the action, sending a shot at goal which struck team-mate Morison before Walsall cleared their lines.
Millwall's attacking pressure in the closing stages was both intense and relentless and they almost found what would've been a deserved leveller when Gregory curled just over from outside the box.
The away side showed no let-up in the dying stages but were met by a stubborn Walsall defence, who clung on for all three points.
Walsall: Etheridge, Laird, O'Connor, McCarthy, Dobson (Kinsella, 83'), Chambers, Jackson (Makris, 90'), Oztumer, Morris, Toner, Moussa (Kouhyar, 73'). Subs not used: MacGillivray, Preston, Ginnelly, Bakayoko
Scorers: Jackson 17', Moussa 49'
Millwall: Archer, Martin (Wylde, 81'), Craig, Williams, Gregory, Onyedinma (Philpot, 90'), Romeo, Webster, Ferguson, Morison, Abdou (Thompson, 74'). Subs not used: King, Nelson, Butcher, Twardek
Scorers: Onyedinma 22'
Referee: Lee Probert
Attendance: 4,474 (570)