清末屬濟寧直隸州西鄉東升莊、西升莊地方。
民國初期屬濟寧縣縉云鄉、第八區、第十學區;1938年后屬偽濟寧縣第三區;1945年8月屬濟寧縣第三區;1946年1月后屬濟寧縣運河區、濟北縣第三區、濟寧縣第三區;1956年后為南張區、南張鄉、西劉鄉;1958年8月屬二十里鋪人民公社;1962年5月,將二十里鋪公社西部劃出,建立南張人民公社;1966年6月撤社建區;1969年3月撤區復設人民公社;1984年5月撤社建鄉;1994年2月改鄉為鎮;2008年撤鎮改設南張街道,沿用至今。