Mūsdienu Vecpils pagasta teritorijā vēsturiski atradās Dižilmājas muiža (Gut Groß-Ilmajen, Dižilmāja), Dižlāņu muiža (Gut Groß-Lahnen, Vecpils), Dižstroķu muiža (Gut Groß-Strohken, Dižstroķi), Mazilmājas muiža (Gut Klein-Ilmajen, Mazilmāja), Mazlāņu muiža (Gut Klein-Lahnen, Mazlāņi), Vecpils muiža (Gut Altenburg).
Vecpils pagasts izveidots ap 1890. gadu, kad apvienoti Vecpils, Lāņu, Stroķu, Lekšu un Ilmājas muižu pagasti. 1935. gadā pagasta platība bija 97,3 km². 1945. gadā pagastā izveidoja Vecpils un Stroķuciema padomes, bet pagastu 1949. gadā likvidēja. 1954. gadā Vecpils ciemam pievienoja Stroķu ciemu. 1958. gadā Vecpils ciemam pievienoja daļu Aizputes ciema, bet daļu Vecpils ciema iekļāva Aizputes ciemā. 1968. gadā daļu pagasta teritorijas pievienoja Kalvenes ciemam. 1990. gadā ciemu reorganizēja par pagastu.[4] 2009. gadā Vecpils pagastu kā administratīvo teritoriju iekļāva Durbes novadā. 2021. gadā Durbes novadu iekļāva jaunajā Dienvidkurzemes novadā.