The Dunde iron–zinc deposit (185Mt at 35% Fe), located in the Tianshan orogenic belt, Xinjiang, northwest China, is hosted in late Carboniferous volcanic–volcaniclastic rocks characterized by prograde skarn formation and retrograde alteration, but the ore lacks any clear spatial link with intrusive rocks. Four stages of skarn formation and ore development can be recognized: (1) a prograde skarn stage that formed grossularitic garnet (Gr39–80; Ad15–58) and diposidic pyroxene (Di63–97); (2) a retrograde skarn stage dominated by the formation of magnetite with minor epidote, ferropargasite, apatite, hematite, and trace amounts of titanite and spinel; (3) a sulfide stage dominated by the formation of arsenide (loellingite and arsenopyrite) and sulfide minerals (sphalerite, pyrrhotite, pyrite, chalcopyrite, and minor galena), calcite, and traces of quartz; and (4) a chlorite–calcite stage mainly characterized by the formation of chlorite, calcite, and traces of sericite. Exsolution of droplet-like and patchy chalcopyrite is developed within sphalerite of the sulfide stage, indicating an exsolution temperature of 350–400°C. As such, the crystallization temperature of early stage magnetite may have been >400°C. Abundant fluid inclusions occur in calcite, which include daughter-mineral-bearing H2O, H2O, and pure H2O inclusions. The H2O inclusions have a wide range of homogenization temperatures from 147°C to 367°C with salinities of 2.4–23.4wt.% NaCl equivalent. The daughter-mineral-bearing H2O inclusions have homogenization temperatures from 172°C to 347°C with salinities of 31.9–33.0wt.% NaCl equivalent. Using the chlorite geothermometer, the temperature of chlorite formation is constrained to be between 152°C and 222°C (average=194°C). Sulfur isotope compositions of pyrrhotite, sphalerite, pyrite, and loellingite have a narrow range of δ34S values from 3.8‰ to 8.1‰ (average δ34S=6.8‰), suggesting that the sulfur was magmatic-derived. Zircon LA–ICP-MS U–Pb dating of wall rock dacite yields a weighted mean 206Pb/238U age of 316.0±1.7Ma. Combined with previous dating results of magnetite-mineralized diorite stocks, diorite dikes, and garnet skarn, it can be inferred that the Dunde iron–zinc deposit formed in the late Carboniferous after 316Ma and is genetically related to deep dioritic intrusions. During the late Carboniferous, the tectonic setting of this region changed from subduction–collision to extension, accompanied by mantle-derived magma underplating in deep. After the formation of the iron–zinc ore deposit, the Dunde district was intruded by an early Permian K-feldspar granite that yields a zircon LA–ICP-MS U–Pb age of 295.75±0.71Ma.