The midfielder was demoted to Zenit's reserve team in September after he refused to play for the Russian champions and issued an ultimatum demanding his contract be renegotiated.
Denisov was unhappy the wealthy club, bankrolled by Russian energy giant Gazprom, had splashed out more than £60 million on Brazil striker Hulk and Belgium midfielder Axel Witsel just before the transfer deadline, media reports said.
Denisov's dispute coincided with a poor run by Zenit. They went on a five-game winless streak in domestic and European competition, piling pressure on coach Luciano Spalletti.
On Thursday the 28-year-old was allowed to rejoin the first-team squad after issuing an apology.
"I made a wrong decision... but it took time to understand it all," he was quoted as saying by the club's website.
"I have a valid contract with the club and I must honour it... I grew up at Zenit and I want to help the club very much."
Zenit said: "The club's management has decided that Igor Denisov can train with the first team from November 1."
Spalletti said Denisov's return would not disrupt a "good atmosphere" within the team.
"I'm not going to tell you all the details, it's our own little secret," the Italian told reporters.
"But if you want to know something, I can tell you that when this whole thing started Hulk came to me and said 'Coach, if I asked the management would it help bring Denisov back?' This should tell you about the atmosphere in our team."
The holding midfielder could make his first appearance for Zenit since September 14 in Friday's league game at home to Rostov.
Zenit then travel to play Anderlecht in a Champions LeagueGroup C match on Tuesday.