Monaco 2 Zenit 0: Defenders send Frenchmen through
Aymen Abdennour was left unmarked at the back post just after the hour, and though the ball came of his shoulder it found Yuri Lodygin's net, before fellow defender Fabinho sealed victory late on.
The result, coupled with Bayer Leverkusen's failure to win at Benfica, sent Monaco through as Group C winners.
Zenit required victory to pip their hosts to a place in the round of 16, and though they had the better of the first half, they were largely outplayed after the break.
The result left Monaco with a third successive victory and clean sheet in all competitions. Moreover, they progressed having conceded just one goal in six Champions League matches.
The French outfit have successfully navigated their last three group-stage campaigns, having lost in the 2003-04 final and succumbed to last-16 elimination the following campaign.
Leonardo Jardim will also take heart from success in Europe as free-spending Monaco struggle to keep up with Ligue 1's frontrunners.
In desperate search of the necessary win, Zenit dominated possession from the outset, but they struggled to create meaningful chances.
Wallace, deputising for the suspended Ricardo Carvalho, blocked a Salomon Rondon drive, Aymen Abdennour scrambled a loose ball clear and Danijel Subasic punched away a Danny free-kick as the hosts held on.
Monaco belatedly came to life in the 35th minute. Jeremy Toulalan was the unlikely employer of some fine trickery down the right, which enabled him to cut inside and fire a low shot narrowly wide.
Zenit rapidly resumed taking the game to their opponents, but Nicolas Lombaerts' close-range header from a corner went straight into the arms of Subasic and the first half finished goalless.
Monaco began the second half on the front foot. Yannick Ferreira Carrasco did well to retain possession down the left and cross low for Dimitar Berbatov, whose shot from 10 yards was deflected wide.
Then Nabil Dirar broke down the right and cut the ball across the Zenit box, but no Monaco player was there to get on the end of it.
Monaco's pressure paid after 63 minutes. Joao Moutinho won and took a free-kick from the left touchline, which Abdennour diverted the ball home in scrappy fashion.
Hulk curled a free-kick just over minutes later, before Abdennour made a superb sliding tackle to deny Danny.
In the closing minutes, Monaco put the result beyond doubt, with Fabinho bursting forward and firing the ball under Lodygin to help Monaco secure the pool on their return to Europe's top table.