The disturbances took place during and after a 1-1 draw in a Second Division game against Manchester City. Fans invaded the pitch, City's players were kept inside the stadium for their own safety and their departure was delayed for an hour after the match, while their 2,500 supporters were locked inside the ground.
Chief Inspector Chris Miles, from Lewisham Police, who was in charge of operations, said: "The violence was absolutely horrifying, the worst I have seen for a long time."
Trouble erupted on the pitch in the second half when City's Tony Vaughan and Millwall's Paul Shaw were sent off, sparking an 18-player brawl.
Lee Bradbury scored City's equaliser in injury time. The striker admitted: "It was intimidating out there and the stewards did not seem in total control."
There were several pitch invasions during the game, and the City manager, Joe Royle, claimed his players were spat at and threatened.
A spokesman for the FA said: "We are awaiting the police report before deciding what to do." Three dog handlers came under attack and one suffered minor injuries. Another officer was taken to hospital with a broken arm after a rock was thrown at him. Mobs of fans smashed car and shop windows. Eighteen people were arrested.
A Metropolitan Police spokesman said: "There was no problem with the City fans, they behaved very well."
Chief Inspector Miles added: "We kept the City fans back in the ground for their own protection. I would say there were up to 300 fans involved - almost all Millwall supporters."
Royle said: "I cannot believe what I saw. It was a disgrace, if we had scored another goal in that atmosphere, I don't think we would have got out alive.
"They must have changed the rules down in London. I didn't think fans were allowed on to the pitch to threaten my players."Reuse content