The Lions' victory made it a hat-trick of wins on the bounce as they remained within touching distance of the play-offs.
Stoke will likely have to settle for a place in the second tier next season after their own three-match unbeaten streak was ended by Gary Rowett's men, with Michael O'Neill's side now 11 points off the top six.
Despite enjoying most of the possession and the chances in the first half, Stoke found themselves behind to Wallace's first goal of the season.
The defender had already gone close with a header that he glanced wide and set-pieces looked to be Millwall's most likely route to goal.
Evans cushioned his header into the path of the 27-year-old to scramble home past Adam Davies, but the lead was not to last.
Powell had been at the heart of all of Stoke's good play with intricate passing and clever thinking, and his raking pass set Steven Fletcher free five minutes after Millwall's opener.
The Scot's scuffed shot found its way through to Brown, who coolly slotted his fourth goal of the season under Bialkowski at the near post.
Rowett's decision to bring on Maikel Kieftenbeld at the break gave Millwall much more control in the second half and they deservedly got their winner 19 minutes from time.
An innocuous ball down the left looked to be comfortable for Batth, but his untimely slip let in Wallace and Millwall's star man kept his composure to square the ball for Bennett who could not miss from close range.