Moravia is a city in Appanoose County, Iowa, United States. The population was 665 at the 2010 census.