Some people were thrown out of the bus and others were trapped inside as it fell about 120 feet and landed on a rural hillside, police and fire officials said.
Rescue crews secured injured passengers on stretchers, then formed a human chain and used ropes to pull them off the slope. Firefighters later lifted the wreckage and said no one had been trapped beneath it.
Bruised and bloodied survivors were rushed to four local hospitals after the crash in the suburban New Territories, the government said in a statement. The government reported during the afternoon that 22 people had died but later corrected the number to 21.
Regional police commander Bonnie Smith told a news conference that the bus hit the back of a container truck. Smith said the truck's 53-year-old driver was arrested and likely would be charged with reckless driving causing death. The driver was not identified by name.
The Apple Daily newspaper reported that the truck suddenly changed lanes before the bus ran into it, but Smith declined to discuss any such details.
The front end of the bus was badly smashed after it came to rest on a slope in an area full of trees and a few small dwellings. Government helicopters hovered overhead as firefighters carried out the rescue.
Three of the injured people were in critical condition and 12 were in serious condition, while the youngest victim — a 9-year-old girl — was listed as stable, according to government spokeswoman Josephine Yu.
The bus driver was among the dead, a government statement said.
Hong Kong Chief Executive Tung Chee-hwa went quickly to the scene and said the government would do all it could to help the survivors, find out what caused the crash and make sure it doesn't happen again.
"This has been a very devastating and painful accident for all of us," Tung told reporters. "The priority right now is to get on with the rescue work."
Hong Kong's roads are generally safe, and Transportation Commissioner Robert Footman said he had never seen such a crash here.
Television ran grainy photos of a 1973 bus accident that claimed 17 lives and said there had been no wrecks that bad in Hong Kong since then. Police and government officials told The Associated Press they were unable to confirm that, because they had no accident records going back so far.
A brief string of crashes in early 1998 killed three people and injured about 120. Bus officials and many passengers characterized those wrecks as bad luck striking all at once.