兵庫県の中央東部に位置し、市内西部を南北に日本標準時子午線(東経135度線)が通っており、北東では京都府、南東では篠山市、南西では多可町、南では西脇市、北西では朝来市と境を接しています。
阪神間からJRや自動車で約1時間30分から2時間圏域であり、市内の南部地域は阪神都市圏との係わりが比較的深く、一方、北部地域は隣接する京都府等との係わりが比較的強くなっています。
地形は、本州の骨格のひとつを構成する中国山地の東端に位置し、粟鹿山(標高962m)をはじめ、急斜面をもった山々によって形作られた中山間地域となっています。
その山々の接点を縫うようにして二大河川の源流が走っています。一つは瀬戸内海へ注ぐ加古川とその上流河川であり、もう一つは日本海へ注ぐ由良川の上流河川(黒井川、竹田川)となっています。
特に市内の石生の「水分れ」は海抜95Mに位置し、本州一低い中央分水界となっています。