大分県の北東部、国東半島のほぼ東半分(南東部は除く)を市域としており、市域北部から東部にかけて伊予灘に面する。