Jason Puncheon's first-half strike condemned the Teessiders to their third defeat in five matches under new boss Tony Mowbray, and underlined the extent of the task the former Boro skipper has inherited since succeeding Gordon Strachan.
Gary O'Neil forced Millwall keeper David Forde into a decent first-half save with a deflected effort that was tipped over the crossbae.
But the visitors dealt with Boro's attacking fairly easily and gradually began to dominate as an attacking force.
Steve Morison should have done better with a 14-yard effort he blazed over the crossbar, but the deadlock was finally broken when Millwall attacked again in the 25th minute.
Liam Trotter surged down the left-hand side and Puncheon swivelled in the box to fire his low cross past Jason Steele.
The midfielder was only signed on loan from League One side Southampton on Wednesday, and almost added a second eight minutes before the break, but his curling free-kick flew inches past the right-hand post with Steele beaten.
Boro's best chance of the afternoon saw Luke Williams connect with Joe Bennett's cross at the front post to force Forde into a decent save, but Puncheon went close again 11 minutes after the break with a low shot that flew into the side netting.
Mowbray responded by introducing Marvin Emnes, who was frozen out under Strachan, but Boro's final chance went begging in stoppage time when James Henry cleared Matthew Bates' goalbound header off the line.
MIDDLESBROUGH (4-4-2): Steele, McMahon, Bates, Wheater, Bennett, Robson, O'Neil (Bailey 41), L Williams, Arca (Tavares 59), Boyd (Emnes 59), Lita.
Subs (not used): Ripley, Hoyte, McDonald, Kink.
MILLWALL (4-4-2): Forde, Dunne, Shittu, Robinson, Craig, Puncheon, Mkandawire, Trotter, Henry, Andrew (Harris 85), Morison.
Subs (not used): Mildenhall, Carter, Ward, Laird, Abdou, Marquis.
Source: Northern Echo
Source: Northern Echo