Peterborough United suffered late heartbreak in the Johnstone's Paint Trophy as Shaun Williams headed home a late cross into the box to send Millwall into round two of the competition.
Posh lost Alex Davey to injury and Ricardo Almeida Santos to injury and were forced into a defensive reshuffle that saw Harry Beautyman deployed at right-back and Callum Elder at centre back, while Michael Smith finished the game at left-back.
Posh made a bright start to the contest at the Den with Marcus Maddison instrumental in the early exchanges, playing some clever passes in the direction of Conor Washington, his pull back was well cleared in one decent move.
John Marquis curled a shot well over the crossbar on eight minutes after a neat lay-off from Aidan O'Brien as the Lions had a rare early foray at the Posh goal.
Shaun Williams was a whisker away from the breakthrough on 14 minutes after advancing from the back, but his left-footer was fired just past the far post.
Posh were forced into a change on 20 minutes with Alex Davey forced out of the action to be replaced by Harry Beautyman.
Jermaine Anderson then squandered a good shooting opportunity after he was played in by Maddison on the angle, he beat the first man in the box, but then scuffed his shot.
Williams curled a free-kick around the wall, but into the side-netting on 25 minutes after Beautyman was penalised for a foul on O'Brien just outside the penalty area.
Vassell was cautioned on 35 minutes for a desperate lunge on the near side at Beevers. Alnwick made a routine stop to deny Marquis on 39 minutes but moments later, Posh were ruing a missed opportunity as Beautyman guided a volley wide after good work from Maddison and Vassell down the left.
Two minutes of added time was indicated by the fourth official, but Millwall went backwards in possession during that period of time.
Alnwick made two stops in the first five minutes of the second period, first denying Upson before a more routine stop to deny a bobbling effort from Williams.
Washington was next to try his luck, his left-foot shot beaten away by goalkeeper Archer after he found a bit of space on the angle.
Forrester then saw a left-footed effort pushed over the bar by Archer as Posh began to create one or two decent opportunities. Bostwick then met a Maddison free-kick, but he couldn't keep his header at the near post down.
Williams fired just over the top as Posh were temporarily down to 10-men with Almeida Santos off receiving treatment to a facial wound.
Anderson hooked a volley over the top after a delightful Taylor cross as Posh re-organised again with Smith replacing the stricken Almeida Santos.
Ben Thompson curled a shot just past the post on 70 minutes after being afforded a bit too much room on the edge of the box.
The hosts were denied the breakthrough moments later by a smothering Ben Alnwick save at the feet of Upson and moments later Beevers clipped the top of the crossbar from the resulting corner kick.
Bostwick fired wide from long-range at the other end after a quickly taken Taylor free-kick. Posh made a change on 75 minutes with Souleymane Coulibaly replacing Vassell in attack.
Maddison should have done better with his right-foot moments later after cutting inside onto his right-foot following an excellent Smith pass, he fired straight at Archer with his right-foot.
Upson saw a deflected effort go straight into the arms of Alnwick as we moved into the final 10 minutes. Paris Cowan-Hall replaced O'Brien on 82 minutes.
Anderson tested Archer from long-range with the keeper making a fairly comfortable stop. Maddison sent a free-kick miles over the bar on 88 minutes after Taylor was felled on the edge of the box.
The home side got the winner in the 92nd minute as WILLIAMS headed home from close-range following a right-wing cross into the box.
Millwall: Archer, Edwards, Craig, Williams, Upson, Onyedinma (sub Webster 90min), Marquis (sub Gregory 68min) Nelson, Beevers, O'Brien (sub Cowan-Hall 82min), Thompson. Unused subs: Girling, Powell.
Posh: Alnwick, Elder, Davey (sub Beautyman 20min), Almeida Santos (sub Smith 63min), Bostwick, Taylor, Maddison, J. Anderson, Forrester, Washington, Vassell (sub Coulibaly 75min). Unused subs: Henry, Angol.
Half-time: Millwall 0-0 Peterborough United
Full-time: Millwall 1-0 Peterborough United