Full-time from The Den
You would have to go back to 1965 to find the last time that The Shrews claimed maximum points on the road against The Lions and Paul Hurst's basement boys produced a classic smash and grab raid this time out.
Dodds' crisp 17th-minute finish was virtually Shrewsbury's only shot on target during a game dominated by Neil Harris' side, who did everything but score.
Shrews' goalkeeper Jayson Leutwiler produced a Man of the Match winning performance as he at times single-handedly kept the home strike force at bay.
Millwall had the first chance of the game on five minutes when skipper Tony Craig sent a header narrowly over from Shane Ferguson's free-kick.
A great bit of skill from the industrious Fred Onyedinma ended with his neat lay-off finding Lee Gregory, who was closed down as he prepared to shoot.
The visiting goal led a charmed life when Millwall created the best chance of the opening quarter of an hour. Gregory was played in by a sublime pass from Shaun Williams. The striker's first touch took the ball beyond keeper Leutwiler and his second was directing the ball towards goal, only for Adam El-Abd, back-tracking at full pelt, to hook off the line.
WIthin 60 seconds, play had swung up the other end with the visitors taking the lead against the run of play. A quick counter-attack had the home defence at full stretch with Ivan Toney's cross picking out Dodds, who made no mistake with a crisp finish from a central position, slotting into the bottom corner past Jordan Archer in the home goal.
Back came Millwall and Onyedinma was denied by Ryan McGivern as he broke through on goal before keeper Leutwiler expertly saved a close range header from Harry Smith.
It took another great stop by Leutwiler to deny The Lions an equaliser on 34 minutes when he somehow managed to tip over a sliced clearance by team-mate El-Abd, who was trying to clear Ferguson's delivery. From the resulting corner Craig's header was hacked off the line by Jim O'Brien as Millwall were thwarted once more.
The Lions went in at the break wondering just how they were trailing after creating the clearest of scoring chances in the opening half, yet were unable to find a way past the inspired Leutwiler in Shrewsbury's goal.
Millwall came flying out of the traps showing real intent and purpose, but again came up a resilient visiting rearguard who defended in numbers and continued to frustrate the home side.
Harris' side continued to push forward and a succession of corners were dealt with by Shrewsbury before left-back Joe Martin tried his luck with a rasping left-foot drive that Leutwiler gathered at full stretch.
A flighted pass by Williams was heading towards the onrushing Gregory, but there was El-Abd to just get his chest to the ball and guide it back to the keeper as an impenetrable visiting back-line held firm.
Craig's forward diagonal was headed into the path of sub Aiden O'Brien by Smith, and some deft footwork created an opening only for the former to drag his effort wide of the upright on 70 minutes.
A superb sweeping move on 74 minutes deserved better when another incisive Craig pass picked out Gregory on the right, he played a super one-two with O'Brien but was denied by the ever alert keeper.
Ferguson's inviting delivery was heading towards Smith and Gregory at the back post but was hooked behind for another corner, and then sub David Worrall was close to conjuring an 82nd-minute leveller with a delicious ball across the face of goal that curled agonisingly away from a posse of Millwall players.
Smith, slightly off balance, thumped the ball over the bar from six yards after a surging run and cross from Thompson and then Craig headed wide with the goal at his mercy from Ferguson's 89th-minute free-kick as The Lions kept banging on the Shrewsbury door, but just could not find a way through.
Millwall: Archer, Martin (O'Brien, 62mins), Craig, Williams, Thompson, Gregory, Onyedinma (Worrall, 83mins), Romeo, Nelson (Butcher, 74mins), Ferguson, Smith. Subs not used: King, Cummings, Mbulu, Abdou.
Bookings: Thompson, Smith
Shrewsbury Town: Leutwiler, Sadler, McGivern (Grimmer, 67mins), Ogogo, Toney, Dodds (Riley, 90+1min), O'Brien, Brown, Smith, Deegan, El-Abd. Subs not used: Halstead, Lancashire, Black, Waring, Ebanks-Blake.
Bookings: Brown, McGivern
Scorer: Dodds (17mins)