Hannibal is an unincorporated community in eastern Ohio Township, Monroe County, Ohio, United States. Although it is unincorporated, it has a post office, with the ZIP code of 43931. It lies along State Route 7. An Ohio River town, it lies below Powhatan Point and above Sardis.