Un poids lourd fonce peu avant 13H00 GMT sur les piétons dans la rue commerçante la plus fréquentée de la capitale suédoise, Drottninggatan. Il finit sa course au croisement de Klarabergsgatan, une artère du centre-ville, en s'encastrant dans la façade du grand magasin Åhléns City. Une épaisse fumée commence à s'en dégager.
"Ça a fait le même bruit qu'une bombe qui explose et de la fumée a commencé à s'échapper de l'entrée principale" de ce magasin, a déclaré au quotidien Aftonbladet un témoin de la scène, Leander Nordling, 66 ans.
Les lieux sont rapidement entourés par la police d'un périmètre de sécurité, et des hélicoptères survolent le centre-ville.
L'attaque a fait quatre morts et 15 blessés, dont plusieurs enfants. Les autorités sanitaires ont précisé que neuf blessés se trouvaient dans un état grave.
"La Suède a été attaquée", a déclaré le Premier ministre suédois Stefan Löfven, cité par les médias du pays. "Tout laisse penser à un attentat", a-t-il ajouté.
"Les terroristes veulent nous effrayer, que nous changions nos comportements, nous empêcher de vivre normalement, mais c'est pourtant ce que nous allons faire. Les terroristes ne pourront jamais vaincre la Suède, jamais", a-t-il déclaré au cours d'une conférence de presse.
Le camion "a été volé à l'occasion d'une livraison à un restaurant", a expliqué à l'AFP une porte-parole de son propriétaire, le brasseur Spendrups, Rose-Marie Hertzman.
Un homme a été placé en garde à vue samedi et serait le chauffeur du camion-bélier, a indiqué un porte-parole de la police suédoise à l'AFP.
Selon plusieurs médias suédois, le suspect est un Ouzbek de 39 ans, sympathisant de l'organisation Etat islamique. Il avait été interpellé vendredi soir à Märsta, une petite ville du nord de l'agglomération stockholmoise.
Un autre homme avait été interpellé plus tard dans la soirée dans une banlieue de la capitale. Des sources policières citées par la télévision publique SVT ont évoqué une "connection" possible entre les deux hommes.