Xã Thượng Giáo nằm ở phía bắc huyện Ba Bể, có vị trí địa lý:
- Phía đông giáp thị trấn Chợ Rã và các xã Bành Trạch, Địa Linh
- Phía tây giáp xã Khang Ninh
- Phía nam giáp xã Quảng Khê
- Phía bắc giáp huyện Pác Nặm và xã Cao Thượng.
Xã Thượng Giáo có diện tích 56,93 km², dân số năm 2019 là 5.549 người, mật độ dân số đạt 97 người/km².[2]