Millwall produced a resilient defensive display as they held Bristol City to a 0-0 draw at Ashton Gaste.

Neil Harris remained with the same starting 11 from Tuesday’s defeat to Ipswich Town at The Den, keeping faith in goalkeeper Jordan Archer despite his costly last-minute error.

The Lions won an unusually high number of corners, with 11 in the first half, but failed to score from each of them as many were headed away from goal or off target.

Neither side produced high-quality chances and were largely reliant on each other’s errors in trying to gain the lead, and tensions rose when Famara Diédhiou was booked for an off-ball altercation with Jed Wallace towards the end of the break.

MORE: Player ratings from Millwall's goalless draw with Bristol City

Millwall were caught by surprise in Bristol’s best chance on 39 minutes when a quick backheel pass between James Meredith and Shaun Hutchinson led to an early cross into Diédhiou, only for the striker narrowly miss out.

The corner count rose in the second half  as Harris’ men went in search of a goal, and Jed Wallace’s attempt forced a save from Frank Fielding but also provided hope that all three points could be for the taking.

But it was Tom Elliott’s introduction that had the game’s biggest impact, combining with Steve Morison as soon as he entered the game and broke into the 18-yard-box only to squander his chance.

Shane Ferguson nearly assisted the winner as Elliott’s header rattled off the post, and the Lions’ best chance came in injury time when George Saville’s effort on goal was parried away by Fielding.

Millwall will travel to the Madejski next Tuesday for a Carabao Cup meeting with Reading and later host Norwich City at The Den on Saturday, still searching for the first win in the Sky Bet Championship.