清宣统二年(1910),百善置镇。
1912年后,百善设乡,属宿县管辖。
1930年,百善乡改宿县第三区。
1939年6月,宿西县办事处下设柳孜区,后又改为百善区,下辖9个乡;1947年,恢复宿西县,设百善区。
1950年,百善设乡,属长山区管辖。
同年8月15日,设百善区(濉溪县第五区),下辖12个乡。
1955年12月,区划变动,百善区下辖6个乡1个镇(百善镇)。
1957年,百善区下辖8乡一镇(百善镇)。
1958年8月撤百善区,成立百善、徐楼两个人民公社。
1962年1月,恢复百善区建制。
1969年4月撤百善区,恢复百善、徐楼两个人民公社。
1972年3月,百善公社划分为百善、柳孜两个公社。
1980年12月,百善区下辖8个公社;1983年4月,将百善区西北边界的6个生产大队,分别划归铁佛和刘桥两区。
1984年,百善区由8个公社改为8个乡。
1992年2月,撤区并乡,将百善乡、宋庙乡、杨柳乡、青卫乡合并为百善镇。
2000年,百善镇为副县级建制镇。
2006年2月8日,百善、徐楼两镇合并为新的百善镇。
2013年,徐楼行政村的翟桥自然村划归濉芜产业园所辖,沿用至今。