Ian Holloway's side continued to look the more dangerous for much of the first half, but they missed a great chance when Martyn Woolford hit the crossbar after latching on to a flick on from Stefan Maierhofer.
Despite remaining on the back foot for long spells, Birmingham could have been ahead before the break had David Forde not got a vital touch to Clayton Donaldson's effort.
Millwall broke the deadlock less than six minutes into the second half when Alan Dunne found the space from a corner to head home after seeing his first effort blocked in a congested box.
The visitors were almost gifted a second when Martin's cross was put just wide by Birmingham defender Paul Robinson as he looked to clear the danger.
Birmingham eventually enjoyed another spell on top as they went in search for a leveller, but Forde was alert to the threat once again to tip over Donaldson's shot.
The introduction of Demarai Gray added another threat to the Birmingham defence, but the teenager's only contribution was to fire over as Birmingham's bid for a late leveller ended in disappointment.