© Getty Images
The visitors had the better of the early stages of the contest, coming close to making the breakthrough inside the opening 10 minutes when Tim Ream managed to get in a header on goal, only for David Forde to palm it away.
Matt Mills was the next Wanderers player to force the Irish stopper into action, once more rising highest to get his head on the ball, which this time was straight at Forde between the sticks.
Having absorbed much of the pressure, Millwall managed to muster their own opening shortly before the half-hour mark when Magaye Gueye's pass was latched on to by Lee Gregory, but he was unable to get his shot on goal.
Both sides continued to press for an equaliser as the first half drew to a close, with Darren Pratley in particular culpable for missing a good opportunity when hesitating before eventually scuffing his shot, while Rob Hall's appeals for a penalty were quickly waved away moments later.
Ian Holloway's charges came close to grabbing a valuable lead heading into the interval when an unmarked Angel struck the ball on the half-volley, although he could not keep his attempt on target as the half ended all square.
Bolton upped the ante following the restart, with Pratley once more squandering a couple of chances to grab the lead for his side, first heading over and then curling wide of the far post when in a promising position.
The former Swansea City midfielder was at it again on the hour, firing away a shot which was well blocked by Alan Dunne, while substitute Liam Trotter almost made an instant impact against his former club by forcing Forde into making a stop shortly after being introduced.
All of Wanderers' hard work did pay off with a little over 20 minutes remaining when Pratley eventually found a way through, latching on to Lee Chung-yong's pass before blasting the ball beyond the reach of Forde with a composed finish.
Millwall came close to levelling things up at the death when Andy Lonergan raced off his line to thwart Martyn Woolford, and that missed chance allowed Bolton to push up the other end where Forde was equal to Conor Wilkinson's long-range drive to stop Bolton sealing the win.
The Trotters did see out the five minutes of added on time, however, to claim all three points which lift them up to 14th place in the league.