The fire broke out in Dukezong Ancient Town in Yunnan province in the early hours of Saturday and lasted for more than nine hours.
Nearly 250 houses were damaged as the flames engulfed the mainly wooden buildings in dry weather.
More than 2,000 firefighters, police and volunteers were mobilised to fight the fire, which started in a guesthouse in the area.
There was no immediate report of casualties, and the cause of the blaze remained unclear. Tourists and residents have been evacuated.
Over half of the ancient town was destroyed, including two houses up to 379 years old.
Dukezong, whose name translates to “town of moon” in Tibetan, was built some 1,300 years ago. It lies on the Southern Silk Road and draws tourists because of its preserved ancient streets, structures and Tibetan culture.
The region was once called Gyaitang Zong, but changed its name in 2001 to Shangri-La, hoping to draw tourists by referencing the mythical Himalayan land described in James Hilton’s 1933 novel.