Simeon Jackson turned home Moussa’s knock-down to give the Saddlers a 17th-minute lead, before Fred Onyedinma headed home the Lions’ equaliser six minutes later.
But Moussa’s tap-in shortly after half-time – his first Walsall goal – sealed a third victory of the season for Jon Whitney’s side.
Neil Harris’ Millwall almost took the lead in spectacular circumstances on 14 minutes, when Shaun Williams struck the underside of the bar with an audacious quick free-kick from the halfway line.
After surviving that scare, Walsall – whose last home win against the London club came in December 2007 - went in front with a well-worked team goal on 17 minutes.
Kieron Morris’ left-wing cross was headed down by Franck Moussa for former Lion Jackson to smash home on the volley from six yards.
But the home side’s lead lasted barely six minutes, as Fred Onyedinma headed in Mahlon Romeo’s accurate delivery from close range to bring Millwall level.
The visitors, winless in their previous five, had the chance to go in front seven minutes before the break, when Byron Webster rose highest to nod Shane Ferguson’s inviting centre a fraction wide.
Walsall immediately went up the other end, with Morris having a left-footed effort parried by Jordan Archer, who then blocked Jackson’s near-post follow-up.
Half-time: Walsall 1-1 Millwall
But the Saddlers weren’t to be denied a second goal on 49 minutes, Moussa tapping in after Laird’s dangerous cross wasn’t dealt with by Archer.
Millwall, last season’s beaten play-off finalists, had a huge chance to equalise four minutes later.
Lee Gregory went through one-on-one and tried to round Etheridge, but the keeper stretched out his left hand and got a vital touch to the ball.
Possession was then worked to Williams, who saw a firm 20-yard strike superbly tipped over by Etheridge.
The Lions continued to push forward, with Steve Morison heading Ferguson’s corner into the side-netting and Gregory bending a dipping, right-footed attempt just wide.
Walsall, though, defended resolutely and could have extended their lead in added time when Laird dragged wide from the edge of the box.
Full-time: Walsall 2-1 Millwall
Team: Etheridge, Laird, O’Connor, McCarthy, Dobson (Kinsella 83’), Chambers, Jackson, Oztumer, Morris, Toner, Moussa (Kouhyar 73’).
Subs not used: MacGillivray, Preston, Ginnelly, Bakayoko, Makris.
Attendance: 4,474 (570 Millwall supporters).