Authorities had anticipated trouble and pre-positioned officers.
"There were at least three rival gang groups here this morning for whatever reason. As they were here, we had officers on scene. We expected issues," said Sgt. W. Patrick Swanton, a police spokesman. He later said there were at least five gangs.
The fight broke out at Twin Peaks restaurant and spilled into the parking lot. It quickly escalated from hands and feet, as weapons, to gunfire, Swanton said.
"In my nearly 35 years of law enforcement experience," he said, "this is the most violent and gruesome scene that I have dealt with."
Bikers shot at each other and at officers, who returned fire.
Swanton expressed anger at Twin Peaks, which he claims had been less than helpful in dealing with gangs in the past. He declined to identify the specific groups involved in Sunday's shooting.
"Are we frustrated? Sure. Because we feel like there may have been more that could have been done by a business to prevent this," he said.
Corporate management at Twin Peaks released a statement saying it was reviewing the circumstances of the shooting. The Waco restaurant is franchised.
"We are thankful no employees, guests or police were injured in this senseless violence outside the restaurant, and our sympathies are with the families of those killed," the statement said.
To escape the fight, some restaurant customers and employees took cover in the freezer, according to CNN affiliate KWTX.
The station reported that more than 100 weapons were recovered, and Waco police said officers were continuing to arrest people arriving with weapons.
Swanton told reporters that eight people were dead on the scene and another was pronounced dead at an area hospital. A total of 18 people were taken to the hospital. It was not immediately clear whether that figure included the person who died. All those injured or dead are believed to be bikers.
No officers were hurt, Swanton said, praising their response.
"Their action has saved lives in keeping this from spilling into a very busy Sunday morning," the spokesman said. "Thank goodness the officers were here, and took the action that they needed to take to save numerous lives."