The man, who was not identified, poured a bottle of petrol on himself on Monday in front of a restaurant in the busy shopping street in in Little India enclave.
He then set himself on fire and began running around screaming when the fire grew too hot and painful.
Bystanders and shopkeepers who heard his screams rushed out with cloth and sacks and managed to put out the fire.
However, the victim was severely burnt and was sent to the Klang hospital by paramedics.
The man, who reportedly delivers cooking gas cylinders for a living, was drunk at the time of the incident, bystanders said.