There were blasts in two metro carriages at two stations, St Petersburg emergency services said.
News agency Interfax cited a source as saying at least one of the blasts involved a device filled with shrapnel.
The agency cited the governor's press office saying 50 had been injured.A Reuters witness saw eight ambulances near the Sennaya Ploshchad metro station while local media reported the nearby Institute of Technology station was also affected.
It said an unidentified explosive device went off on a train traveling between two stations.
All metro stations in St Petersburg have been closed, Interfax reported, citing metro staff.
The Life News website, a news outlet with close ties to Russia's security services, showed pictures of blown-out train doors and injured people on the station platform.
Video footage posted on social media shows a train with mangled doors standing at the platform.
Frantic commuters reach out into the doors and windows, trying to see if anyone is there and shout "Call an ambulance!"