秦置鄣郡,西漢元封二年(公元前109)改丹郡,治宛陵(今宣州區)。西晉太康二年(281)析丹陽郡置宣城郡。隋初廢郡,改南豫州為宣州,不久又改稱宣城郡。唐初置宣州,中間一度改稱宣城郡,以后復稱宣州。南宋乾道二年(1166)升為寧國府,明、清襲之。1932年置第九行政督察區,專署駐宣城。后改為第六行政督察區。
1949年5月設宣城專區,屬皖南行署區。宣城專署駐宣城,轄宣城市及宣城、郎溪、廣德、寧國、涇縣等5縣。1950年撤銷宣城市,原蕪當專區所屬當涂、南陵2縣劃入宣城專區。轄7縣。1952年1月撤銷宣城專區,將宣城、郎溪、廣德、涇縣、當涂、南陵6縣劃歸蕪湖專區;寧國縣劃歸徽州專區。
1970年蕪湖專區改稱蕪湖地區,地區駐蕪湖市,轄蕪湖市及蕪湖(駐魯港)、當涂、郎溪、廣德、宣城、涇縣、南陵、繁昌等8縣。1973年蕪湖市改由省直轄。 1980年1月29日,國務院批準:蕪湖地區的蕪湖縣劃歸蕪湖市;蕪湖地區行政公署駐地由蕪湖市遷至宣城縣,并更名為宣城地區。1980年2月正式改名宣城地區,1982年4月行署機關移駐宣城。1983年10月8日,國務院批準:宣城地區的當涂縣劃歸馬鞍山市;繁昌縣、青陽縣、南陵縣劃歸蕪湖市。1997年,面積12340平方千米,人口271.2萬,行署駐宣州市。轄宣州、寧國2市和郎溪、廣德、涇縣、旌德、績溪5縣。
2000年6月25日,國務院批準:(1)撤銷宣城地區和縣級宣州市,設立地級宣城市。市人民政府駐新設立的宣州區。(2)宣城市設立宣州區,以原縣級宣州市的行政區域為宣州區的行政區域。區人民政府駐疊嶂中路。(3)宣城市轄原宣城地區的廣德縣、郎溪縣、涇縣、旌德縣、績溪縣和新設立的宣州區。原宣城地區的寧國市由安徽省直轄。2001年2月,宣城市正式掛牌成立。
2000年第五次全國人口普查,宣城市總人口2659639人;宣州區822707人,郎溪縣316592人,廣德縣485757人,涇縣333586人,績溪縣177091人,旌德縣142064人,寧國市381842人。
經過2001-2003年全市鄉鎮行政區劃調整以后,全市由176個鄉鎮、街道(67鎮、103鄉、6個街道)調整為115個鄉鎮、街道,其中有61個鎮、44個鄉、10個街道。2004年末,全市戶籍人口273萬人,常住人口268萬人。