A man hurled grenades at a bus stop in the Belgian city of Liege and sprayed gunfire at crowds of Christmas shoppers and children on Tuesday, killing three people and wounding 123 before fatally shooting himself in the head.
It was not clear what his motive was, but Belgian officials said there was no indication it was an act of terrorism.
Witnesses said the gunman, Nordine Amrani, 33, began his attack near a bus stop at Place Saint Lambert, a central shopping area and the site of the Christmas market and main courthouse - sending shoppers scattering to flee the bullets.
Amrani, freed from jail about a year ago after a conviction for possessing weapons and drug offences, ended it by shooting himself in the head with a handgun, the witnesses said.
He had a bag. He got a grenade out of his bag. He threw the grenade at the bus stop. Then he had a Kalashnikov (rifle). He shot in all directions. Then everyone ran to try to save themselves. Then he got a revolver out and put a bullet in his head, one witness told RTBF radio.
The victims were a 15-year-old boy, who died at the scene, a 17-year-old boy and a 75-year-old woman who died in hospital. A justice official said 123 had been wounded.
Liege's mayor, Willy Demeyer, said the two boys had been taking school exams nearby just before being caught in the attack.
Shattered glass and blood stains were scattered across Place Saint Lambert. The square and surrounding roads remained closed on Tuesday evening, with police blocking access. The street of Amrani's former house in a quiet part of northern Liege was also sealed off.
At Amrani's most recent address, an apartment block near the scene of the attack, Johan Buron said he was surprised to learn of his neighbour's crime.
He was calm, every time I met him in the corridor he was very friendly and said 'Hi', he told Reuters. If my memory serves me right he was a welder.
Random killings of this kind are relatively rare events in Belgium. Most recently, in January 2009, a man stabbed to death two infants and a woman, and injured 13 at a nursery in the town of Dendermonde.
Liege, Belgium's fifth largest city and once dominated by the steel industry, last made grim headlines in January 2010 when a five-storey building collapsed, killing nine people.
Gaspard Grosjean, a journalist for a local Liege newspaper, was in the square moments after the attack.
We saw people with bullet wounds in their shoulders, their hands, he said, adding that he had seen one body. I see people completely scared, people are crying, everyone is on their phones.
Justice officials said Amrani had been summoned in the morning to appear before police, an appointment he did not make.
He was convicted in 2008 for the illegal possession of arms and for growing a huge field of cannabis.
He has no history of terrorist acts, prosecutor Daniele Reynders told a news conference in Liege.
A spokesman for Belgium's crisis response centre also said there was no indication that it was a terrorist attack. It was not clear whether Amrani was Belgian.
Prosecutor Cedric Visart de Bocarme told Belgian television that Amrani had been jailed several times since his youth and said that police searching his home had not found any further weapons or suspicious items.
Belgian Prime Minister Elio Di Rupo expressed horror at the attack and travelled to the city, 90 km east of Brussels. Belgium's king and queen also visited.
The police closed down the city centre for a number of hours, with helicopters circling overhead and ambulances arrived from as far away as neighbouring the Netherlands.
A museum on the square said it had taken in injured people.
(Additional reporting by Robert-Jan Bartunek and Philip Blenkinsop; Editing by Rex Merrifield and Matthew Jones)