Fontannes est située dans le département de la Haute-Loire (43), dans la région Auvergne. La commune de Fontannes est séparée de celle de Brioude par la rivière Allier et est située au pied du massif du Livradois/Forez appartenant au Massif central.
La commune est traversée par quatre cours d'eau : la rivière Allier, la rivière Senouire et les ruisseaux du Ternivol et de la Dirande.