The attack, which also caused several injuries, was the latest in a string of similar assaults with vehicles in Europe that include the southern French city of Nice, Berlin and London.
“There are deaths, and many injured,” Nina Odermalm Schei, a spokeswoman for Swedish intelligence agency Sapo, told AFP, without giving a precise figure.
“Sweden has been attacked. Everything points to a terror attack,” said Prime Minister Stefan Lofven.
Police released a grainy picture of a suspect but said they did not currently have him in custody.
“We do not have contact with the driver,” national police chief Dan Eliasson told reporters.
Authorities also said they could not immediately provide a death toll or say how many were injured but local media said two or three people had lost their lives in the attack.
Pictures showed a large blue truck with a mangled undercarriage smashed into the Ahlens department store.
A spokeswoman for beer company Spendrups told AFP that the truck “had been stolen during a delivery to a restaurant”.
Like a bomb
Witnesses described scenes of terror and panic.
One witness identified only as Dimitris told the Aftonbladet daily the truck came “out of nowhere”.
“I couldn’t see if anyone was driving but it was out of control. I saw at least two people get run down. I ran as fast as I could away from there,” he said.
Another shopper, 66-year-old Leander Nordling, was at Ahlens when he suddenly heard a loud bang.
“It sounded like a bomb exploding and smoke starting pouring in through the main entrance,” he told daily Aftonbladet.
He and fellow shoppers took refuge in a supply closet inside the department store.
“After that the building was evacuated ... There were a lot of guards who took care of us outside and they urged us to leave the scene immediately,” Nordling said.
Video footage taken from above showed scores of people streaming down the street in terror.
‘Attack on us all’
The attack occurred just before 1300 GMT (8pm, Phuket time) at the corner of the store and Drottninggatan, the city's biggest pedestrian street, above ground from Stockholm's central subway station.
Thick smoke billowed from the scene, while the area was blocked off by police and crowds gathering around the police cordon.
Police vans circulating in the city using loudspeakers urged people to go straight home and avoid large crowds.
The centre of the usually buzzing city was in lockdown, with the central train station evacuated and other stores quickly emptied of shoppers.
The Stockholm metro was also completely shut down, with the attack taking place at the city’s T-Centralen station, through which all the city’s lines pass.
The area around the attack was cordoned off, but other streets in the city were packed with pedestrians trying to find a way home on a Friday afternoon.
Helicopters could be heard hovering in the sky over central Stockholm, and a large number of police cars and ambulances were dispatched to the scene, witnesses said.
Another section of Drottninggatan was also the scene of Sweden's only other terror attack, in 2010, when a suicide bomber blew himself up, slightly injuring several others.
European politicians expressed solidarity, with European Commission President Jean-Claude Juncker saying that it was an "attack on us all."
A spokesman for German Chancellor Angela Merkel said: "Our thoughts go out to the people in Stockholm, to the injured, their relatives, rescuers and police.
“We stand together against terror.”
French President Francois Hollande voiced his “horror and indignation” over the assault.
Trucks as weapons
The attack followed a string of similar massacres in Europe by people using vehicles as weapons.
The deadliest came last year in France on the Bastille Day national holiday of July 14, when a man rammed a truck into a crowd in the Mediterranean resort of Nice, killing 86 people.
He was shot dead by police, and the Islamic State group later claimed responsibility.
Last month, Khalid Masood, a 52-year-old convert to Islam known to British security services, drove a car at high speed into pedestrians on London's Westminster Bridge before launching a frenzied knife attack on a policeman guarding the parliament building.