鸦片战争后上海开埠,外国的船只从外洋直溯而上,1845年英国殖民者首先在上海县境域划定英租界;1849年,法国殖民者也要求划定法租界;1863年,美租界与英租界合并成立公共租界。至此,上海市区划分为不同的管辖区,租界以南的华界被称为南市,同时,苏州河以北老闸(宋代建)和新闸(清代建)一带因大量贫苦农民的流入,逐渐兴起,形成北市。1910年清政府颁发《城乡自治章程》,上海县合城南境、老闸、新闸、江境庙区域为上海城;另设蒲松镇、东泾镇及12乡。1914年,上海改城为市,蒲松镇也改为蒲松市,另设闸北市、洋泾市,合称19市乡。1926年孙传芳督江苏省,成立淞沪商埠,分全境为上海、闸北、浦东、沪西以及吴淞5区。
国民政府成立后,根据孙中山的大上海计划,1928年国民政府设立上海特别市,扩大市区范围包括上海、宝山县的一部分,设立17个区,而上海地区各县则仍属江苏省,从此上海市与上海县分离。1930年又改特别市为市,辖吴淞、引翔、闸北、法华、沪南、塘桥等17个区,全市面积527.5平方公里。城市范围东达浦东,西至静安寺、徐家汇,南趋龙华,北达宝山路底。
1949年5月上海解放后,成立上海市人民政府,设黄浦、老闸、邑庙、蓬莱、嵩山、卢湾、常熟、徐汇、长宁、普陀、闸北、静安、新成、江宁、北站、虹口、北四川路、提篮桥、杨浦、榆林等20个区和新市、江湾、吴淞、大场、新泾、龙华、洋泾、真如、高桥等10个郊区。同时,上海的郊县苏南、苏北行暑,后由江苏省管辖。1956年经过行政调整,上海市辖区减为18个。1958年,为了适应城市发展的需要,将江苏所属上海地区的郊县划入上海市,至此,上海市辖黄浦、邑庙、蓬莱、卢湾、徐汇、长宁、普陀、闸北、新成、江宁、虹口、提篮桥、杨浦、榆林等14个区,浦东、嘉定、宝山、上海、崇明、松江、奉贤、南汇、青浦、川沙和金山等11个县,总面积达6340.5平方公里,比建国初大十倍以上。1960年,撤消邑庙、蓬莱设立南市区;撤消新成、江宁设立静安区;撤消提篮桥区、榆林区并分别并入虹口、杨浦两区;析上海县置闵行区,析宝山县置吴淞区,次年又撤消浦东县。1964年,撤消闵行区与吴淞区,此后上海保持了10个区和10个县不变达10余年之久。
文化大革命结束后,1980、81两年,再置吴淞区与闵行区。1988年,撤消吴淞区和宝山县改为宝山区。1992年,撤消嘉定县,设立嘉定区。为进一 步改革开放,1993年撤消川沙县,将其境域与黄浦、杨浦、南市的浦东地区合并设立浦东新区。同年,撤消上海县和闵行区,合设新的闵行区。20世纪末,松江县、青浦县和金山县也改为区。2000年南市区划入黄浦区。2001年奉贤县和南汇县撤县建区。2009年为了更好的开发浦东地区,合理配置地区经济与社会资源,综合优化总体布局,促进社会协调健康发展,撤南汇区并入浦东新区。时至今日,上海全市共辖17个区、1个县。