上ノ国町(かみのくにちょう)は、北海道南西部、檜山振興局管内最南端にある町。檜山郡に属する。日本海に臨む農漁業のまちである。
渡島半島の南西部、松前半島の付け根部分を占める。西は日本海に面しており、北には檜山振興局所在地の江差町が隣接する。東と南は大千軒岳をはじめとする松前半島の脊梁をなす山々によって渡島総合振興局管内の各町と隔てられている。
木古内町との境にある尖岳(とんがりだけ)に源を発する天の川が北西に流れ、中心市街のある町北部の海岸で日本海に注いでいる。これに沿うようにJR江差線が通っていた。天の川沿いに農業を、海岸沿いに漁業を主とする集落が点在している。「天の川きららトンネル」がある。
中心市街から西に約3km行くと、海にやや突き出す形で夷王山がそびえる。中世に松前氏の祖が勝山館を築いた地で、当時の墳墓群もある。山頂からは日本海と上ノ国市街を一望できる。周辺は野草の宝庫で、檜山道立自然公園の一部ともなっている。
気候は沿岸を流れる対馬海流による影響が大きく、北海道の中では非常に温暖で積雪が少ないが、雨は多い。一年を通じて風が強く小規模ながら風力発電も行われている。