宋太平兴国七年(982)建火山军,治平四年(1067)置火山县,故治在今城关东南35千米旧县镇。熙宁四年(1071)废火山县。金贞元元年(1153)置河曲县。取“河千里一曲”之义名县。据《读史方舆纪要》,县城西濒黄河,恰当河之弯曲处,因名河曲。
1949年属兴县专区。1952年属忻县专区。1958年偏关县及保德县之一部并入,属晋北专区。1960年偏关、保德2县析出。1961年复属忻县专区。1967年属忻县地区。1983年属忻州地区。2000年属地级忻州市。
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个乡:文笔镇、楼子营镇、刘家塔镇、巡镇、鹿固乡、前川乡、单寨乡、土沟乡、旧县乡、沙坪乡、社梁乡、沙泉乡、赵家沟乡。县政府驻文笔镇。
2010年第六次人口普查,河曲县常住总人口145136人,其中,文笔镇74307人,楼子营镇7207人,刘家塔镇9694人,巡镇镇15044人,鹿固乡5412人,前川乡3173人,单寨乡3383人,土沟乡2421人,旧县乡6372人,沙坪乡3981人,社梁乡5064人,沙泉乡7421人,赵家沟乡1657人。
2015年末,河曲县辖4个镇、9个乡(合计13个),11个居委会、340个村委会(合计351个)。