清徐古稱梗陽,始建于春秋。隋開皇十六年(596年)于梗陽故城置清源縣,“因縣西清源水為名”,屬并州。大業二年(606年)廢入晉陽縣。唐武德元年(618年)復置,仍屬并州。開元十一年(723年)改屬太原府。金大定二十九年(1189年)析清源(東境)、平晉、榆次3縣地置徐溝縣,屬太原府,故治在今徐溝鎮。
興定四年(1220年)改屬晉州。元屬冀寧路。明復屬太原府。清乾隆二十八年(1763年)清源縣廢入徐溝縣。1912年復置清源縣,1915年再度并入徐溝縣。1917年恢復清源縣,與徐溝縣俱屬冀寧道;道廢后直屬省。1952年7月,清源、徐溝兩縣合并,取兩縣縣名首字,稱為清徐縣,縣城在清源鎮。時屬榆次專區。1958年屬太原市。
1996年,清徐縣面積609平方千米,人口27萬人。轄4個鎮、9個鄉:清源鎮、東于鎮、孟封鎮、徐溝鎮、馬峪鄉、西谷鄉、集義鄉、吳村鄉、王答鄉、高花鄉、楊房鄉、柳杜鄉、碾底鄉。
1998年底,清徐縣面積609.5平方千米,人口28.75萬,其中非農業人口3.16萬,農業人口25.59萬。轄4個鎮、9個鄉,9個居委會、195個行政村,211個自然村。
2000年第五次人口普查,清徐縣總人口328787人,其中:清源鎮 60027 人,徐溝鎮 26983 人,東于鎮 28841 人,盂封鎮 16862 人,馬峪鄉 15186 人,碾底鄉 4928 人,吳村鄉 23423 人,柳杜鄉 19930 人,西谷鄉 20230 人,王答鄉 50923 人,揚房鄉 14225 人,高花鄉 19604 人,集義鄉 27625人。
2001年,碾底鄉并入馬峪鄉,吳村鄉并入清源鎮,楊房鄉并入孟封鎮,高花鄉并入徐溝鎮。調整后,清徐縣轄5鄉4鎮。清源鎮總人口79002人。
2004年底,清徐縣轄4個鎮、5個鄉:清源鎮、東于鎮、徐溝鎮、孟封鎮;馬峪鄉、柳鄉、西谷鄉、王答鄉、集義鄉。