Верно: в городе Санкт-Петербурге.
Строгая литературная норма требует склонять русские и хорошо освоенные иноязычные названия городов в сочетании со словом город: в городе Байконуре. Отсутствие согласования (в городе Байконур) можно встретить в официально-деловом стиле, в административно-судебной речи.