Indian Creek is a stream in Decatur County, Iowa and Harrison County, Missouri. It is a tributary of the Thompson River.
The stream headwaters arise approximately two miles east of Lamoni, Iowa at and an elevation of approximately . It flows south to southeast into Missouri to its confluence with the Thompson River at and an elevation of . The confluence is in northeastern Harrison County approximately four miles north-northeast of the community of Cainsville.
Indian Creek took its name from the Indians who once used the area as a hunting ground.