大分県北東部に位置し、南側を別府湾、東側を伊予灘、瀬戸内海、北側を周防灘に囲まれている。半島の北には姫島がある。
瀬戸内海式気候に属し、年間を通じて降水量が少なく、冬も晴れる日が多い。
標高721mの両子山をはじめとする両子火山群の峰々がそびえており、半島全体が円に近い火山地形である。丘陵地と谷が海岸に向かって放射状に伸びる。北部の海岸線は小さな入り江と岬が連続するリアス式海岸となっている。日本の秘境100選に選定されている。
人口98,314人、面積877.68km²、人口密度112人/km²。(2025年2月1日、推計人口)