茨城県の南西端に位置し、東京都心から40キロメートル圏内にあります。
東は取手市(とりでし)、西は常総市(じょうそうし)、北はつくばみらい市に隣接し、南は利根川(とねがわ)を挟んで千葉県野田市(のだし)と柏市(かしわし)に相対した市です。
地勢は、茨城県南部から千葉県北部にわたる大きな洪積(こうせき)台地である「常総台地」から枝状に伸びる猿島(さしま)台地の先端部分に位置します。利根川東遷(とうせん)工事及び鬼怒川(きぬがわ)開削(かいさく)工事により、三方向を利根川・鬼怒川・小貝川(こかいがわ)に囲まれた島状の地形となっています。