明洪武十四年(1381)建城。
明洪武十五年(1382)置乌撒卫,为卫治。
清康熙四年(1665)后历为府、州、县治所。
1949年为忠义镇。
1952年更名城关镇,并置葡萄、新关、小山、火龙、三台、保家等乡。
1958年撤镇乡建东方红公社。
1962年析置城关镇及草海、六洞、保家公社。
1980年更城关镇为草海镇。
1992年白马乡、东山乡、小山乡、北镇乡等乡并入置草海镇。
2013年析置出五里岗街道、六桥街道、陕桥街道、海边街道。