先秦屬古滇國地。西漢屬益州郡毋棳縣地。三國蜀漢屬益州興古郡西豐縣地。西晉至南朝梁屬寧州興古郡毋棳縣地。北朝周屬南寧州。隋屬南寧州總管府。唐初屬劍南道姚州;唐南詔國置通海鎮,啟通海人文之風,屬通海都督轄地。宋大理國屬秀山郡。元憲宗六年(1256)通海置千戶所,屬善闡萬戶;至元十三年(1276)改通海千戶所為通海縣,屬臨安路寧海府(同年降為寧州);二十七年(1280)直屬臨安路,后復屬寧州,為臨安路駐地。至元十三年(1276),將原大理國阿僰部休臘地置河西州,至元二十六年(1289)改為河西縣,屬臨安路。
明洪武十五年(1382)通海、河西兩縣直屬臨安府,府駐地移駐建水縣。清初沿明制,通海、河西縣屬臨安府。雍正八年(1730)7月,臨安府屬迤東道。乾隆三十一年(1766)10月,臨安府屬迤南道。光緒十三年(1887)10月,臨安府屬臨安開廣道。民國2年(1913)通海、河西縣均屬蒙自道。民國18年(1929)廢道直屬省。民國37年(1948)通海、河西縣均屬云南第五行政督察區(駐建水縣)。
1949年12月13日,通海縣和平解放;1949年12月10日,河西縣正式解放。通海、河西縣均屬玉溪專區。1953年2月,將華寧縣興義鄉(包括新寨、香樹營、義廣哨、大義廣、馬家灣、窯沖、四家村)共21平方千米劃歸通海縣。1956年11月16日,國務院全體會議第40次會議決定:撤銷河西、通海2個縣,設置杞麓縣;以原河西、通海2縣的行政區域為杞麓縣的行政區域;縣人民委員會駐原通海縣城(一說為:1958年10月,華寧縣與杞麓縣合并為通海縣,駐今通海縣秀山鎮。1959年10月,從通海縣分出恢復華寧縣)。1960年1月4日國務院批準:將杞麓縣改名為通海縣,屬玉溪專區。1970年屬玉溪地區,1997年屬玉溪市。
1997年,全縣轄6個鎮、3個鄉:秀山鎮、河西鎮、四街鎮、楊廣鎮、九街鎮、納古回族鎮、興蒙蒙古族鄉、里山彝族鄉、高大傣族彝族鄉。縣政府駐秀山鎮。
2000年第五次人口普查,通海縣常住總人口275063人,其中:秀山鎮31799人,楊廣鎮58862人,九街鎮58169人,河西鎮48558人,四街鎮41457人,納古鎮11162人,里山彝族鄉8412人,高大傣族彝族鄉11014人,興蒙蒙古族鄉5630人。
2000年末,通海縣轄6個鎮、3個鄉:秀山鎮、河西鎮、四街鎮、楊廣鎮、九街鎮、納古鎮、里山彝族鄉、高大傣族彝族鄉、興蒙蒙古族鄉。全縣總人口26.3萬人,其中非農業人口3.29萬人。少數民族人口占總人口的14%,其中5000人以上的有漢、彝、回、蒙古4個民族。興蒙鄉是蒙古族在云南的唯一聚居地。境內人口密度365人/平方千米。
2002年1月10日,據云南省人民政府《關于通海縣調整部分鄉鎮行政區劃的批復》(云政復[2002]2號)和玉溪市人民政府《關于通海縣調整部分鄉鎮行政區劃的通知》精神,將通海縣九街鎮管轄的萬家、大樹、六一、金山、長河5個村委會(國土面積25.66平方千米,人口23007人)和楊廣鎮管轄的城郊、東村、黃龍3個村委會(國土面積17.81平方千米,人口13106人)劃為秀山鎮管轄。3月25日,通海縣部分鄉鎮行政區劃調整工作正式啟動。10月28日,玉溪市人民政府下發《關于通海縣河西鎮東渠村委會更名為大回村委會的批復》,同意河西鎮東渠村委會更名為大回村委會,更名后原行政村管轄的行政區域、隸屬關系不變(2003年7月22日正式實施更名)。
2002年末,全縣有6鎮3鄉,即:秀山鎮、河西鎮、四街鎮、九街鎮、楊廣鎮、納古鎮、里山彝族鄉、興蒙蒙古族鄉及高大傣族彝族鄉,下屬65個村民委員會和4個社區居民委員會,530個村(居)民小組,360個自然村。全縣有總人口265457人,總戶數75320戶,總人口比上年增加1110人,增0.42%。總人口中,男性130981人,占總人口的49.34%;女性134476人,占總人口的50.66%。農業戶63179戶,農業人口231320人,占總人口的87.14%;非農業戶12141戶,非農業人口34137人,占12.86%;少數民族人口37139人,占總人口的13.99%。
2010年第六次人口普查,通海縣常住總人口300800人,其中:秀山鎮80299人,楊廣鎮48512人,九街鎮35822人,河西鎮50423人,四街鎮44797人,納古鎮16148人,里山鄉8734人,高大鄉10547人,興蒙鄉5518人。
2011年,撤銷秀山鎮、九街鎮,設立秀山街道、九龍街道。調整后,通海縣轄2個街道、4個鎮、3個鄉:秀山街道、九龍街道、楊廣鎮、河西鎮、四街鎮、納古鎮、里山彝族鄉、高大傣族彝族鄉、興蒙蒙古族鄉。縣政府駐秀山街道。