San Marzano Oliveto liegt 27 km südlich von der Provinzhauptstadt Asti entfernt. Die Gemeinde liegt unweit des Belbo (Flusssystem des Po). Das Gemeindegebiet umfasst eine Fläche von neun km² und hat 989 Einwohner (Stand 31. Dezember 2022). Zur Gemeinde zählen noch die Ortschaften von Corte, Leiso, Mariano, Saline und Italiana.