The municipality is located in the Bergell sub-district of the Maloja district. It is located on a terrace at the entrance to the Passo della Duana which leads into the Avers valley and the Passo da la Prasignola into the Val Madris. It consists of the village of Soglio (at 1,095 m (3,593 ft)) and the section of Spino.
Soglio lies on a ledge on the mountainside on the northern side of the Val Bregaglia (Bergell in German) above the river Maira (Mera in Italian), with views across the valley to the Bondasca glacier and the peaks of the Sciora group, Piz Cengalo and Piz Badile in the Bregaglia Range.
View of Soglio (foreground) with the Sciora peaks (left), Piz Cengalo (left centre) and Piz Badile (centre)
The town is 17 kilometers (11 mi) from the Italian town of Chiavenna at the foot of the Val Bregaglia, and 39 km (24 mi) from Sankt Moritz in the Engadine valley which is reached via the Maloja Pass. These two towns provide the nearest railway stations. The highest point of the territory of the municipality is the summit of Piz Duan (3,131 m (10,272 ft)).