A security guard at the Pan African Mall in Alexandra apparently opened fire on shoppers on Friday afternoon after he suspected one of them had a gun, police said.
The mall was still closed by 14:45, while hundreds of people waited outside. There was also a large police presence.
Some shoppers said they were not safe there.
Paramedics said earlier 12 people were injured in the shooting including a 4-year-old.