The man also threw grenades into a crowded square from a rooftop before killing himself, reports say.
The attacker was named as Nordine Amrani. He was known to police for firearms offences.Eyewitness Greg Ienco: "We saw the explosions and the panic, it was quite incredible"
Earlier reports said at least two more men were involved, but officials said the attacker acted alone. Terrorism was not a cause, they added.
Amrani was jailed for 58 months in September 2008 for possessing firearms and drugs, media reports said.
Officials did not confirm this, but said they were aware he had spent some time in prison.Weapons in a bag
Amrani had been asked to come for an interview at a police station in connection with charges against him.
A resident of Liege, he left home with a rifle, a pistol and three grenades in a bag, prosecutors said.
Greg Ienco, a journalist at local newspaper La Meuse-Liège, described the scene of the attack.
"We saw four explosions. I was in a building 200m from Saint-Lambert Square," he said.
"It was quite incredible. We saw one man on the roof who tried to kill people. This man killed himself with a grenade."
Two of the three dead were teenage boys aged 15 and 17, the third a 75-year-old woman.
TV images showed blood splattered across the cobblestones of the square.
Doctors at a city hospital are trying to save the life of an 18-month-old child injured in the attack. Several others are reported to be in a serious condition.
Medical staff at a field hospital at the scene treated 52 of the injured. Some others made their own way to other hospitals.
Roads into the centre of Liege were sealed off but vehicles are now coming back into the city.
Explosives experts were called in to search the area for unexploded grenades. People were initially told to stay in buildings but are now returning to the streets.
Place Saint Lambert is a busy intersection, served by hundreds of buses daily. It hosts an annual Christmas market which attracts some 1.5 million visitors a year.