宋太平兴国七年(982)建火山军,治平四年(1067)置火山县,故治在今城关东南35千米旧县镇。熙宁四年(1071)废火山县。金贞元元年(1153)置河曲县。取“河千里一曲”之义名县。据《读史方舆纪要》,县城西濒黄河,恰当河之弯曲处,因名河曲。
金大定二十二年(1182)升火山军为火山州,县属之。大定末年改火山州为睲州,隶河东北路。蒙古至元二年(1265)废河曲县及睲州。明洪武二年(1369)复置河曲县,六年废,十三年再置,属太原府。清雍正二年(1724)改属保德州。乾隆二十七年(1762)县徙今治。民国初年属雁门道,道废后直属省。
1949年属兴县专区。1952年属忻县专区。1958年偏关县及保德县之一部并入,属晋北专区。1960年偏关、保德2县析出。1961年复属忻县专区。1967年属忻县地区。1983年属忻州地区。2000年属地级忻州市。
1997年,河曲县辖城关镇、楼子营镇、刘家塔镇、巡镇镇、树儿梁乡、南墕乡、寺墕乡、五花城乡、鹿固乡、新窑乡、旧县乡、葛真龙乡、沙坪乡、社梁乡、红崖峁乡、土沟乡、单寨乡、前川乡、阴塔乡、沙泉乡、赵家沟乡。县政府驻城关镇。
2000年第五次人口普查,河曲县总人口138811人,其中:城关镇39052人,楼子营镇9605人,刘家塔镇7806人,巡镇镇14089人,树儿粱乡5613人,五花城乡4067人,鹿固乡4160人,寺也乡4131人,南也乡2865人,单寨乡3287人,土沟乡4078人,前川乡3423人,红崖峁乡2336人,旧县乡8133人,抄坪乡3712人,新窑乡4973人,社梁乡2489人,葛真龙乡2747人,沙泉乡5541人,阴塔乡4128人,赵家沟乡2576人。
2001年区划调整后,全县辖4个镇、9个乡:文笔镇、楼子营镇、刘家塔镇、巡镇、鹿固乡、前川乡、单寨乡、土沟乡、旧县乡、沙坪乡、社梁乡、沙泉乡、赵家沟乡。县政府驻文笔镇。