В городе имеется пять действующих пассажирских железнодорожных вокзалов:
Балтийский вокзал (обслуживает поезда на станции Кингисепп и Ивангород; пригородный пассажиропоток на Петергоф, Ораниенбаум, Сосновый Бор, Гатчину, Лугу);
Витебский вокзал (поезда дальнего следования на Калининград, города Украины, Белоруссии, стран Балтии; пригородные перевозки на Павловск, Оредеж, Вырицу, Гдов);
Ладожский вокзал (поезда дальнего следования на Мурманск, Вологду, Архангельск,Тюмень, города востока России, Хельсинки; пригородные перевозки на Будогощь, Волховстрой, Невдубстрой);
Московский вокзал (поезда дальнего следования на Москву, центр и юг России; пригородные перевозки на Кириши, Лодейное Поле, Волховстрой, Будогощь, Малую Вишеру, Бабаево, Великий Новгород);
Финляндский вокзал (обслуживает пригородный пассажиропоток на Сестрорецк, Выборг, Кузнечное, Приозерск, Ладожское Озеро и др., а также поезда на Хельсинки).
Ранее в городе также функционировал Варшавский вокзал. В 2001 году он был закрыт, поезда, отправляющиеся с него, переведены на другие вокзалы; на путях вокзала развёрнута экспозиция Музея железнодорожной техники, а в помещении вокзала теперь расположен крупный торговый центр.
Примерно до 1920 года в городе существовал Приморский вокзал. Здание вокзала приблизительно располагалось на нынешнем Приморском проспекте, на логическом продолжении Карельского переулка. Линия от него отходила на север в направлении Коломяжского моста (через Чёрную речку), а после моста разветвлялась на 3 направления: 1 — на запад, сливалась с существующей ныне линией в районе современной станции «Новая Деревня»; 2 — на север, линия шла вдоль нынешнего Коломяжского проспекта, затем, возможно, сливалась с существующей грузовой линией в Озерках; 3 — на восток, соединительная линия Приморского и Финляндского вокзалов, после упразднения Приморского вокзала была перетрассирована к современному виду (ветвь на Сестрорецк).
Через грузовые железнодорожные станции Петербурга проходит значительный объём грузов, в первую очередь перегружаемых на суда (экспортируемое сырьё — металлы, удобрения, лес и др.) или наоборот, с судов (импорт) в морском порту.
В Петербурге расположены управления крупнейшей в России железной дороги — Октябрьской — и двух её отделений: Санкт-Петербургского и Санкт-Петербург-Витебского.
Существовали планы организации кругового движения электричек по типу S-bahn через Ладожский вокзал по Окружной линия ОЖД, но эти планы остаются нереализованными.
C 1948 года в городе действует Детская железная дорога — Малая Октябрьская железная дорога. Транспортного значения она не имеет, используется как внешкольное учебное заведение для профориентации и приобщения подрастающего поколения к железнодорожному транспорту.