1997年5月8日,国务院批准(国函[1997]33号)撤销太原市南城区、北城区、河西区、南郊区、北郊区,设立太原市小店区、迎泽区、杏花岭区、尖草坪区、万柏林区、晋源区。晋源区辖原河西区的义井、罗城2个街道,原南郊区的晋源、姚村、金胜4个乡镇。区政府驻晋源镇。1998年元月1日正式挂牌成立。
1998年底,晋源区:辖2个街道(义井、罗城),4个乡镇(金胜、晋源、晋祠、姚村),48个居委会、96个村委会,112个自然村,全区人口20.2万,其中非农业人口9.7万,农业人口10.5万,全区面积287.6平方千米,其中建成区面积10.6平方千米。
2000年,晋源区辖2个街道、4个镇。总人口180165人,其中:义井街道 33028 罗城街道 19475 金胜镇 31956 晋源镇 36505 晋祠镇 35412 姚村镇 23789人。
2001年,晋源镇改设街道办事处,调整后晋源区辖3个街道、3个镇:晋源街道、义井街道、罗城街道;晋祠镇、金胜镇、姚村镇。