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 also said that 20 people had been injured. Pictures on social media showed blown-out train doors and injured people on the station platform (Twitter)
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.
Russia’s anti-terrorism committee confirmed at least 10 people had been killed.
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.
Local news agencies quoted Kremlin spokesman Dmitry Peskov saying Russian President Vladimir Putin has been informed of the explosion.
Footage from the scene showed commuters evacuating the platform (Youtube)
Mr Putin expressed his condolences for the victims and said the Kremlin was considering all causes for the blasts, including terrorism.
He was visiting the city and is expected to hold talks with the Belarusian president later in the day.
Three metro stations have been closed, local media outlet Fontankareported.