Unable to pay for a budget hotel, a Yunnan couple decided instead to pass the hours until their train departed by staying inside Kunming railway station on Saturday.
It was about 9pm when Xiong Wenguang, a 59-year-old migrant worker from Chuxiong county, saw a knife-wielding man rush towards them and pushed his wife out of the way, Xinhua reported. His quick thinking saved her life, but Xiong was not so lucky. He was one of the 29 killed.
"We were planning to take a morning train on Sunday to Zhejiang for work. The tickets are still with my husband," Chen Guizhen, 50, told Xinhua.
One witness told the Beijing Times he was in a waiting room when the violence erupted. "Six or seven men in black with knives rushed at us, stabbing everyone in front of them," he said.
His friend tried to shield his young daughter from the killers.
But he said: "In protecting his six-year-old daughter, he was sliced from chest to neck and fell to the ground with blood pouring from the wound."
He added: "Some of the assailants wore masks, others did not. The weapons they used were 60cm-long knives and 30cm-long daggers."
Another witness, Yang Haifei, told Xinhua: "Masked men in black clothes were everywhere. They were chopping anyone in sight. One man in his 20s in ordinary clothes walked towards me when everyone was fleeing.
"He then fished out a long knife and sliced me on the chest. I ran."
Watch: China train station attack eyewitness: 'I saw five people holding knives...'
Wang Dinggeng told the Times that outside the station, two women in black began to "chop people around them with arm-long, sword-like knives".
Wang said people ran into the station only to find "four masked attackers driving everyone to flee to another exit". Wang added: "A middle-aged man had a knife stuck so deeply in his back only its handle was visible."
Ding Xuefu, an auxiliary police officer on duty at the Kunming railway station when the attackers descended on passengers, risked his own life to save another policeman.
“I saw a policeman being hacked at by two men near the coach bus station. I ran over from the train station plaza, where I was stationed, and held one of the attacker on the floor and tried to grab the attacker’s knife," he told the Post.
"The next thing I knew, someone was chopping at the back of my head,” Ding said. He had a knife wound in the back of his head that was six inches long, three inches wide and one inch deep. The blow also fractured his skull.
The policeman he rescued was also in critical condition, Ding said.
“I couldn’t tell where they were from. They were all dressed the same. They were not very tall,” he said of his attackers.
Ding is under observation at the hospital after emergency surgeries, pending further operations to remove blood clots in his brain.
Watch: Xinjiang separatists behind deadly China rail attack: Xinhua
An unnamed Harbin resident was reported by the China News Agency as saying his mother was among the victims.
"My mother tripped over a chair. I failed to pull her up. One attacker thrust a knife into my mother's throat. Instead of pulling it out, the attacker drew another chopping knife he had with him and continued to chop her."
Another Harbin resident said: "Seven or eight people with knives assaulted everyone in sight, including the elderly and children. The attackers continued to strike at people on the ground who weren't dead."
Two security staff were killed and at least seven police officers were injured, Xinhua said.
Yesterday police were believed to be hunting for an unknown number of assailants.
Sun Jianjun, deputy head of the Third People's Hospital of Yunnan Province, told the Post that 36 victims were sent to the hospital, but seven died on the way. Those in critical condition included a woman who was six months pregnant. Doctors said the baby was still alive but she had suffered heavy bleeding.
Sun said: "Many of the injured were stabbed more than once. The knives were very sharp and at least 50 centimetres long."
He said over 200 doctors and nurses had been working round the clock to treat the injured.