The 16-year-old ended up on the tracks after he was accused of shoplifting from a store in Hägerstensåsen, south west of city.
The shopkeeper is believed to have chased the boy and confronted him on the platform, and the two got into a scuffle.
"I'm still not sure exactly how it happened, but after some kind of fight they both ended up on the tracks," Sven-Erik Olsson of the local police told the TT news agency.
While the shopkeeper managed to get back onto the platform, an oncoming train clamped the teen between the train and the platform.
He remains in hospital in Stockholm.
The accident meant that underground passengers around the capital faced lengthy delays.
According to the Expressen newspaper, the shopkeeper, 33, was arrested on the suspicion of attempted murder but later released.
Police are investigating whether the boy was guilty of stealing from the store.