城步歷史悠久,其先民活動可以追溯到新石器時代,縣北西巖鎮朝園里有新石器時代文化遺址。
縣境因所處地理位置的關系,歷史上常分屬不同政區。
隋末,肖銑據邵陽置建州,設武攸縣,治今城步儒林鎮,為置縣之始。
唐武德四年,李淵平肖銑,更武攸為武岡,仍治今儒林鎮,隸南梁州。
貞觀十年,改南梁州為邵州,今城步大部分地方為邵州武岡縣地,縣南境則分別為“西原蠻”地和“桂州蠻”地。
宋初移武岡縣治于今武岡市城關鎮,于原治置城步寨,始用“城步”之名。
弘治十七年(1504)析武岡、綏寧縣地置城步縣,隸屬寶慶府,治所設今縣城,并沿襲至今。
清乾隆三年城步改隸靖州,乾隆六年復隸寶慶府。
1949年10月14日,城步縣解放,隸屬邵陽區督察專員公署,后隸屬邵陽專員公署、邵陽地區行政公署。
1956年11月30日,國務院批準撤銷城步縣建制,建立城步苗族自治縣,系全國第二個苗族自治縣。
1986年1月27日,國務院批準撤銷邵陽地區建置,實行市管縣體制,城步苗族自治縣劃隸邵陽市。