Tom Bradshaw's second-half double secured Millwall's fourth win in five games as they came from behind to beat Stoke at The Den.
The Potters took the lead when on-loan midfielder Romaine Sawyers drove home his first goal for the club midway through the first half.
But Bradshaw turned the game around with two goals in 10 minutes, stabbing home Sheyi Ojo's cross before Ryan Leonard set him up to make it 2-1.
Josh Tymon and Steven Fletcher went close to levelling but were unable to prevent a third straight defeat for Michael O'Neill's side.
Although Millwall applied much of the early pressure, with Bradshaw working hard up front, it was the visitors who created better openings.