The Lions dominated the early part of the game but Boro had the best chances with Kris Boyd having a shot blocked and goalkeeper David Forde tipping over Gary O’Neil’s deflected effort.
The away side took the lead on the quarter hour Liam Trotter centring for Puncheon, signed on loan from Southampton on Tuesday, to convert from inside the box.
Middlesbrough searched in vain for a second-half equaliser but Leroy Lita missed with two headers meaning Boro slipped into the drop zone.
Millwall started brightly and after a few dangerous crosses were cleared Puncheon fired in an early shot from the edge of the box which Middlesbrough goalkeeper Jason Steele got everything behind.
Boro went straight up the other end of the pitch and Boyd fired in a shot which was blocked behind by Lions defender Paul Robinson.
From the resulting corner an O’Neil shot was deflected and dipped towards goal but goalkeeper David Forde did well to back-pedal and tip the ball over.
The away side remained on top, Steve Morison firing over from 15 yards before they took the lead on 25 minutes.
Liam Trotter took the ball down the left-side and hit a floated cross into the box which the Middlesbrough defence should have cleared but they allowed Puncheon to steal in to fire home from 10 yards.
Tony Mowbray’s team were almost level against the run of play with 39 minutes on the clock, full-back Joe Bennett overlapped on the left side before sending in a cross which Luke Williams stabbed towards goal from a narrow angle but Forde did well to parry.
The second half began with Middlesbrough having the first opportunity, Boyd bringing down a Barry Robson through ball but his back-heel did not find the supporting Lita or David Wheater.
Middlesbrough tried to build up a head of steam but the Lions almost stole a second on the counter-attack, Morison laying the ball off to Danny Shittu who was denied at full stretch by Luke Steele.
Lita then went close to an leveller on 73 minutes, Mickael Tavares crossing from the right but the striker could only nod over at the near post before he missed again in the final minute, heading wide from Bennett’s ball in.
The away side could have snatched a second at the death as James Henry’s stabbed effort from Morison’s pass was well saved by Steele.