Расположен в северо-западной части Ставропольского края. Граничит с Петровским, Шпаковским, Красногвардейским, Грачёвским, Изобильненским и Ипатовским районами. Территория района — 168,5 тысяч га. Ближайшая железнодорожная станция находится в г. Изобильном — 25 км от с. Донского.
Климат в районе континентальный, рельеф местности пересечённый. По территории протекают реки Большой Егорлык, Ташла, Большая Кугульта, Малая Кугульта, пересыхающая летом р. Тугулук; по этим землям бежит рукотворная река, гордость Ставрополья — Правоегорлыкский канал. Почвы чернозёмные, песчано-глинистые, местами солонцевато-глинистые. Растительность типично степная, много лесных полос, есть небольшие рощи.
В 1924 году Ставропольская губерния была преобразована в округ, куда вошла территория будущего Труновского района.
В 1935 году территория Труновского района была выделена из состава Ставропольского округа и на основании Постановления ВЦИК от 23 января 1935 года был образован Труновский район. Название он получил в честь героя гражданской войны на Ставрополье — Константина Архиповича Трунова. Его именем названо и родное село героя. Одновременно село Терновское (ранее Новогеоргиевское), в котором родился Трунов, было переименовано в село Труновское и определено районным центром.
19-21 января 1943 года Труновский район освобождён от немецко-фашистских захватчиков.
20 июня 1957 года Дмитриевский район был упразднён. Подлесненский сельсовет был передан в Труновский район.
В 1963 года Указом Президиума Верховного Совета РСФСР район был упразднён, а его территория включена в состав Изобильненского и Шпаковского районов. В декабре 1970 года район восстановлен в современных границах.
16 марта 2020 года все муниципальные образования Труновского района были объединены в Труновский муниципальный округ.