Hannibal is a city in Marion and Ralls counties in the U.S. state of Missouri. Hannibal is located at the intersection of Interstate 72 and U.S. Routes 24, 36 and 61, approximately 100 miles (160 km) northwest of St. Louis. The population was estimated at 17,432 in 2008. The Hannibal Micropolitan Statistical Area is composed of Marion and Ralls Counties.