The Tigers, without a victory since they beat Leeds at the end of December, earned the points with only 45 seconds on clock when David Meyler took advantage of some poor defending to slam the ball home.
But it was a game of poor quality in south London, where the hosts offered very little until a late flurry, with James Henry missing an absolute sitter midway through the second half.
Steve Bruce's men did enough to see it out, though, and remain level on points with second-placed Leicester, who remain in the top two on goal difference.
In contrast, Millwall, who are now without a win in four games and have lost the last three, and slip further off the play-off pace.
Millwall last week