Tom Bradshaw’s first-half strike helped Millwall extend their unbeaten run to four Championship matches with a hard-fought 1-0 win over Norwich at The Den.
The Lions striker netted his second goal in two games to inflict back-to-back defeats on David Wagner’s inconsistent Canaries.
City dominated possession throughout the first half but went into the break behind after Bradshaw poked home from close range after 18 minutes.
Wagner’s side continued to lack creativity across a toothless festive performance as Joe Edwards’ hosts survived a late George Saville red card to hold on and climb eight points clear of the drop zone.
Wagner rang the changes from City’s Boxing Day defeat at West Brom as Ben Gibson, Danny Batth, Christian Fassnacht, Onel Hernandez and Hwang Ui-jo all started in a surprise away XI.
While for Millwall, Shaun Hutchinson, Murray Wallace and Zian Flemming all came in after the Lions’ much-needed 2-0 against QPR.
The visitors started brightly as Ashley Barnes shot straight at Millwall goalkeeper Matija Sarkic and Hwang fired wide of the post from range.
And Korean striker Hwang almost emulated his stunning 30-yard strike against Watford last month when his free-kick whistled ferociously past a post.
But it was the hosts who took the lead against the run of play when Bradshaw slid in from close range after Brooke Norton-Cuffy’s inviting low delivery across the face of goal.
City responded by enjoying several sustained spells of possession but continued to lack ideas when in the final third.
And Millwall almost punished them on the stroke of half-time when Angus Gunn pulled off a brilliant acrobatic save to deny Flemming’s venomous goalbound effort.
The Lions looked lively straight after the break as Aidomo Emakhu stung the palms of Gunn once again with a rising near-post piledriver.
And Norton-Cuffy missed a golden opportunity to double their advantage when he inexplicably headed straight at the Norwich goalkeeper while completely free in the box.
Tempers flared on the hour mark when Barnes and Jake Cooper were booked for a pair of separate altercations that saw both sets of players clash and the atmosphere in Bermondsey reach boiling point.
Wagner threw on attacking trio Jonathan Rowe, Adam Idah and Marcelino Nunez shortly after and in-form winger Rowe injected some immediate impetus down the left-hand side.
But City continued to struggle for any cutting edge as Millwall battled bravely against prolonged periods of pressure out of possession.
The contest became increasingly end-to-end as City pressed for a leveller and Bradshaw came close to grabbing another when he fired over from a tight angle.
Gunn once again kept City in it with a flying save to deny Ryan Longman before Saville saw red with two minutes remaining for a cynical late lunge on a rampaging Rowe.
City rallied for a late equaliser but suffered another defeat on the road as Millwall took a significant further step towards Championship safety.