漢置汶山郡,唐置茂州。1958年由茂縣、汶川兩縣及理縣部分地區設茂汶羌族自治縣。取茂縣、汶川二縣首字命名。1963年三縣分設,原茂縣更名為茂汶羌族自治縣。1987年恢復茂縣。
1996年,茂縣面積4060.4平方千米,人口9.7萬人。轄2個鎮、21個鄉:鳳儀鎮、南新鎮、石鼓鄉、渭門鄉、永和鄉、溝口鄉、光明鄉、富順鄉、土門鄉、東興鄉、雅都鄉、維城鄉、曲谷鄉、回龍鄉、飛虹鄉、黑虎鄉、三龍鄉、白溪鄉、洼底鄉、較場鄉、太平鄉、松坪溝鄉、石大關鄉。縣政府駐鳳儀鎮。
2000年第五次人口普查,茂縣總人口103570人,其中(3個鎮、20個鄉):風儀鎮27751人,南新鎮8600人,疊溪鎮2697人,石鼓鄉5593人,渭門鄉3503人,永和鄉3685人,溝口鄉3782人,光明鄉6078人,富順鄉5986人,土門鄉4199人,東興鄉4677人,黑虎鄉2408人,飛虹鄉2172人,回龍鄉1941人,三龍鄉3386人,白溪鄉2508人,洼底鄉1697人,石大關鄉2189人,太平鄉2676人,橙坪溝鄉1171人,曲谷鄉2486人,雅都鄉2855人,維城鄉1530人。
2004年,茂縣轄3個鎮(鳳儀、南新、疊溪)、20個鄉(石鼓、渭門、溝口、富順、光明、土門、東興、雅都、曲谷、維城、回龍、三龍、白溪、洼底、飛虹、黑虎、石大關、太平、松坪溝、永和)。
2009年8月19日,省政府(川府民政[2009]13號)批復同意撤銷維城鄉,將原維城鄉所屬行政區域劃歸雅都鄉管轄,雅都鄉政府駐通河壩村。調整后,全縣轄3個鎮、18個鄉:鳳儀鎮、南新鎮、疊溪鎮、渭門鄉、永和鄉、溝口鄉、光明鄉、富順鄉、土門鄉、東興鄉、黑虎鄉、飛虹鄉、回龍鄉、三龍鄉、白溪鄉、洼底鄉、石大關鄉、太平鄉、松坪溝鄉、曲谷鄉、雅都鄉。
2010年第六次人口普查,茂縣常住總人口104829人,其中:鳳儀鎮41697人,南新鎮7590人,疊溪鎮2397人,渭門鄉3737人,永和鄉3322人,溝口鄉3244人,光明鄉5718人,富順鄉5667人,土門鄉4073人,東興鄉4105人,黑虎鄉2222人,飛虹鄉2006人,回龍鄉1919人,三龍鄉2745人,白溪鄉1845人,洼底鄉1563人,石大關鄉2011人,太平鄉2343人,松坪溝鄉1096人,曲谷鄉1984人,雅都鄉3545人。
2013年,省政府(川府民政[2013]26號)批復同意撤銷光明鄉,設立光明鎮,鎮政府駐馬蹄村,轄原光明所屬行政區域。2014年,省政府(川府民政[2014]32號)批復同意撤銷雅都鄉,設立雅都鎮。
全縣現轄5個鎮、16個鄉:鳳儀鎮、南新鎮、疊溪鎮、光明鎮、雅都鎮、渭門鄉、永和鄉、溝口鄉、富順鄉、土門鄉、東興鄉、黑虎鄉、飛虹鄉、回龍鄉、三龍鄉、白溪鄉、洼底鄉、石大關鄉、太平鄉、松坪溝鄉、曲谷鄉。