It was a game that probably epitomised Bristol City's year on the whole.
The Robins signed out of 2022 with a point in a match that won't live long in the memory. For manager Nigel Pearson, it was a performance that will give him some much-needed respite for a couple of days at least before Sunday's trip to Coventry.
With the sound of knives being sharpened around BS3 following the Boxing Day defeat, the manager needed a response and reaction from his players against a side who are notoriously tough to beat at home.
Before last night, Millwall had only lost two out of their 11 matches on home soil and given how effective they are with a direct and physical approach, it was never going to be pretty on the eye.
Pearson picked a side that many had been calling for. Andi Weimann was back in his No10 role, George Tanner occupied the right wing-back spot, Rob Atkinson returned in defence and Antoine Semenyo was handed his first start since the 1-1 draw with Middlesbrough before the World Cup break.
In a game of few chances, City carved out the two best ones with Semenyo and Weimann missing glorious second-half opportunities. The visitors had one major scare when Millwall's Andreas Voglsammer's effort cannoned off Atkinson and onto the bar at the end of the first half.
On paper, a point at Millwall would be considered a good result. Whether that applies to Pearson's circumstance is up for debate but there were plenty of positives on show following a difficult last few days.
Here's the verdict from a goalless affair at The Den.
The reaction...
Millwall had an interesting intimidation tactic before the two sets of players headed out onto the pitch. The tunnel is purposely narrow with the players rubbing shoulders while LED lights aim to create a daunting, hostile entrance.
This was a game where City needed to be up for the scrap. Any signs of weakness and Gary Rowett's side would have bullied them off the park, particularly with a baying home crowd roaring on every challenge under the lights.
After the West Brom defeat, Pearson said there was a chance City's confidence could have been damaged. Millwall is one of the last places you'd want to go when there's a fragility in the side.
However, if there were any murmurs that the players had down tools in the last couple of games, there was absolutely no sign of it last night. Alex Scott set the tone when he threw himself into a tackle early on, before being on the end of one just moments later - welcome to Millwall.
The hosts immediately went about their gameplan, launching balls forward towards Tom Bradshaw who was locked in an intriguing battle with Atkinson starting in the middle of the back three (more of that below.)
It was the type of performance that typifies a Pearson side. Gritty, dogged and disciplined. Many will rightly argue that is the least they would expect when watching their side but when results and performances haven't been going your way, there can be a tendency to shirk in the shadows when the going gets tough.
Every player out there gave their all until the final whistle and as Pearson noted in his post-match press conference, the work rate was always going to be the defining factor at a stadium where they won't give you a second on the ball. "It's about having respect and you need to match the work rate," he said.
"Our central midfield two got through so much work screening and Andi Weimann playing in the No10 position but towards the end, he flattened into a three. We needed everyone to have an appetite to work tonight to minimise any threats because I've got huge respect for Millwall's record here and the way they play."
That should be the minimum requirement in every game and they'll need to back that up when they take on Coventry at the weekend but while support for the manager in the stands is wavering, last night's evidence shows the players are still giving their all.
Rob Atkinson in the middle
It was no great surprise to see Atkinson back in the starting XI for two reasons. One because Andy King came off injured against West Brom and therefore was a doubt and secondly because his height advantage was always going to be important against a side who average the most aerial duels in the Championship.
It has been a testing couple of weeks for the central defender after he was left out of the side for the 2-1 defeat at Stoke and the fallout that followed. Last night was his chance to prove the manager wrong and his dominant performance was key in keeping the clean sheet.
The battle against Bradshaw was an intriguing one. He was given an early scare when he allowed a long ball forward to bounce before being tasked with running towards his own goal with the Millwall striker breathing down his neck.
It's difficult to recall Atkinson playing in the middle of the back three at all this season. Pearson has always favoured him on the left with Kal Naismith taking up that central position.
But that was a showing to prove he is more than capable of making that role his own. With Naismith to his left and the equally superb Zak Vyner to his right, City had mobility on either side and the defence instantly looked more balanced.
Atkinson was tasked with winning those aerial battles. In fact, no player could match his eight aerial duels won with Millwall's Murray Wallace and Bradshaw both finishing the game with six.
His most important contribution came in the first half when he somehow, inadvertently, deflected Voglsammer's powerful effort onto his own crossbar. Whether it was luck or superb defending is open to interpretation but it typified his overall display.
After the game, Pearson refused to get drawn into the question of whether he has shown the reaction he was looking for following his previous absence from the squad and said: "You're trying to make something out of it that's not there but it's the same for every player so Rob's got talent.
"They tend to play quite narrow when they attack. Their wide attackers come in and they defend narrow and attack relatively narrowly at times so I think it suited Rob's game there tonight. It was a decent performance from him."
Semenyo still searching
From one end to the pitch to the other and it was Antoine Semenyo's opportunity to stake his claim after being handed just his second league start since the end of October. He was also looking for his first goal since the 3-2 defeat at Norwich back in September.
Pearson selected the Ghanaian for his ability to come off his marker, turn and run in behind. Millwall's backline isn't blessed with pace and alongside Tommy Conway, they had the potential to cause plenty of problems if they had space to run into.
In fairness to Millwall, they sat deep at times and limited that opportunity make those runs but Semenyo was playing with the bit between his teeth. He fought for every ball, covered a huge amount of grass and was determined to let the defenders know they were in for a game.
He was understandably rusty at times given his lack of football. There was one moment in the first half where he failed to control the ball twice in good attacking positions much to the frustration of Pearson down on the touchline.
There were also glimpses on show to suggest that he's not too far off reaching those levels towards the second half of last season. His pace and power running at the backline caused panic on numerous occasions, in the second half especially, and he got himself into a handful of decent scoring positions.
His first was a header at the back post which he stuck wide from a George Tanner cross before being pulled to the ground following a Naismith cross in the first half. He linked up more effectively with Weimann in the second half and the pair combined to create one of the two golden chances.
He latched onto Weimann's ball over the top and seemed destined to score only for George Long to come off his line to close the angle and make a save. Perhaps an in-form Semenyo of last season would have buried that.
Semenyo actually looked better as the game went on especially when Wells was introduced for the final 20 minutes of action. He seemed more confident to make those runs into dangerous positions and hold up the ball to bring Weimann into play.
Pearson hinted that he will be back on the bench on Sunday with Wells coming in, which would seem sensible after going down with cramp a couple of times before the end. He said: "In spells (he was) very good.
"There wasn't a great deal of space in behind because they were quite deep but it was time to freshen it up and I think it proved to be okay and it means we have players who are fresh for the weekend now."
SIGN UP: For our daily Robins newsletter, bringing you the latest from Ashton Gate
READ NEXT