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. According to the 2010 U.S. Census the population was 17,606. The Hannibal Micropolitan Statistical Area is composed of Marion and Ralls Counties.