The 29-year-old man confessed to an inquiry tasked with determining responsibility for the blaze that he was involved in starting it, the police said in a statement sent to Reuters on Wednesday.
He is expected to appear before a Johannesburg court soon on charges of arson, 77 counts of murder and 120 counts of attempted murder, the statement said.
One of the worst disasters in living memory in South Africa's economic hub, the blaze broke out on Aug. 31 in a dilapidated building crammed with mostly foreign migrants. Many of the victims were burned beyond recognition.
The deaths shed light on the unsafe conditions in which many poor people live in Johannesburg's city centre, where dozens of buildings have been abandoned and taken over by criminal groups who charge fees for staying there.