1977年从白沙埠镇、枣沟头镇、李官乡各划出一部分村组建半程公社。
1984年改称半程乡,1994年设镇。
1997年,面积81.4平方千米,人口4.5万,辖半程、魏家峪、邓家庄、尚庄、刘家峪、大峪、闵沂墩、团埠子、大闵庄、北张庄、后沙汀峪、小闵庄、西沙汀峪、中沙汀峪、南沙汀峪、辛庄子、后孙沟、中孙沟、前孙沟、沂田庄、上艾固、小郝埠、老公地、下艾固、田家庄子、土门、北褚庄、赵家庄、西夏庄、东夏庄、司家庄、白草沟、后大郝埠、中大郝埠、前大郝埠、东大郝埠、小集子、乜家村、韩家村、范家村、王庄子、西哨、东哨、清沂庄、龙王庄、枣林庄、杨刘官庄、西南庄、中南庄、后南庄、前南庄51个行政村。
2002年,半程镇辖51个行政村,13070户、44108人,面积81.34平方千米,镇区人口23760人。
2003年5月13日,省政府批复同意将费县汪沟镇石家庄、东石沟、西石沟、后社、三胜庄、永太庄、任家庄等7个村划归临沂市兰山区半程镇管辖。
2005年8月4日,兰山区政府《关于同意半程镇镇调整部分行政村规模的批复》(临兰政发[2005]38号):同意半程镇将原有的58个行政村合并为50个。调整方案为:1、前南庄、中南庄、后南庄、西南庄合并为南庄,办公地点设在原中南庄;2、前大郝埠、中大郝埠合并为前大郝埠,办公地点设在原前大郝埠;3、前孙沟、中孙沟、后孙沟合并为孙沟,办公地点设在原中孙沟;4、前沙汀峪、西沙汀峪合并为前沙汀峪,办公地点设在原前沙汀峪;5、刘家峪、魏家峪合并为刘魏新村,办公地点设在原刘家峪;其他未调整的行政村规模保持不变。
2011年11月,将汪沟镇山水口村、小湖村、小柳汪村3个行政村划归半程镇管辖。