Police said on Twitter that they had taken one suspect into custody and that another passenger from the truck had died as it crashed into people gathered around wooden huts serving mulled wine and sausages at the foot of the Kaiser Wilhelm memorial church in the heart of former West Berlin.
The nationality of the suspected driver, who fled the crash scene and was later arrested, was unclear, police said.
German media cited local security sources as saying that there was evidence suggesting the arrested suspect was from Afghanistan or Pakistan and entered Germany in February as a refugee.
“We heard a loud bang,” Emma Rushton, a tourist, told CNN. “We started to see the top of an articulated truck, a lorry … just crashing through the stalls, through people.”
Rushton said the truck seemed to be travelling at about 40 mph (65 kph).
Police later said that 48 injured people were brought to Berlin hospitals.
Pictures from the scene showed Christmas decorations protruding from the smashed windscreen of the black truck. In the aftermath, it was resting lopsided on the pavement with a mangled Christmas tree beneath its wheels.
Berlin police said on Twitter they were investigating leads that the truck had been stolen from a construction site in Poland.
Interior Minister Thomas de Maiziere said the circumstances of the crash were still unclear, adding: “I don’t want to use the word ‘attack’ yet although a lot points to that.”
The incident evoked memories of an attack in Nice, France in July when a Tunisian-born man drove a 19-tonne truck along the beach front, mowing down people who had gathered to watch the fireworks on Bastille Day, killing 86 people. That attack was claimed by Islamic State.
US President-elect Donald Trump condemned what he called an attack, linking it to “Islamist terrorists” before German police officials had said who was responsible.
The White House on Monday condemned what it called “what appears to have been a terrorist attack”.
Germany has not in recent years suffered a large-scale attack from Islamist militants like those seen in neighbouring Belgium and France.
But it was shaken by two smaller attacks in Bavaria over the summer, one on a train near Wuerzburg and another at a music festival in Ansbach that wounded 20 people. Both were claimed by Islamic State.
And government officials have said the country, which accepted nearly 900,000 migrants last year, many from the war-torn Middle East, lies in the “crosshairs of terrorism.”
In mid-October, police arrested a Syrian refugee suspected of planning a bomb attack on an airport in Berlin. The 22-year-old man committed suicide in prison shortly after his arrest.
PEOPLE URGED TO STAY AWAY
A government spokesman said Chancellor Angela Merkel was briefed on the situation by de Maiziere and the Berlin mayor. Police said there were no indications of further dangerous situations in the area and urged people to stay away from the scene.
“I’m deeply shaken about the horrible news of what occurred at the memorial church in Berlin,” Foreign Minister Frank-Walter Steinmeier said.
The truck veered into the market around 8 pm, normally a crowded time when adults and children would be gathering in the traditional cluster of wooden huts that sell food and Christmas goods in an annual celebration replicated across Germany and much of Central Europe.
Ariel Zurawski, whose Polish freight company owns the truck, said the driver of the truck did not work for him.
“It wasn’t my driver,” Zurawski told Polish private broadcaster TVN 24. “I vouch for him. He’s my cousin.”
The incident took place near a famous Berlin landmark – the Gedaechtniskirche or memorial church built in 1891-95, which was left a ruin with a jagged tower after it was damaged in World War Two bombing raids as a monument to peace and reconciliation.
Police cars and ambulances converged quickly on the scene.