The Congo striker finished off a superb team move in the first half to settle the clash in Brussels, leaving the visitors on the brink of exiting European competition this season
The Congo striker combined superbly with Sacha Kljestan before clipping the ball over Vyacheslav Malafeev to settle a tense match in Brussels, in which the Russian side struggled to create any chance of note in the absence of Brazil international Hulk.
Anderlecht surprisingly elected to leave Tom De Sutter on the bench despite his recent form in front of goal, with Mbokani starting as the lone striker in his stead.
Igor Denisov returned to the starting line-up for the hosts after he was welcomed back into the squad following his off-the-field disputes with the club, whilst Vladimir Bystrov replaced Brazil forward Hulk in support of striker Aleksandr Kerzhakov.
Mbokani was presented with the first opening of the match after less than a minute, when Milan Jovanovic's cross was missed by Tomas Hubocan and slmost bounced kindly for the striker, but he was unable to bring it under control.
Nicolas Lombaerts then had Silvio Proto worried when his snap-shot from the edge of the area almost wrong-footed the keeper, before Sergey Semak fired over the bar from close range after a superb turn and cross from Bystrov.
Anderlecht looked the brighter side in the opening exchanges and, with just over a quarter of an hour gone, Mbokani justified his selection with a superbly-taken strike, linking up with Kljestan on the edge of the box and dinking it over Malafeev to notch his side's first in the competition this season.
Anderlecht were playing with real confidence - Jovanovic forced Malafeev into a fingertip save before Behrang Safari's dangerous run and cross was cleared by Lombaerts.
Zenit began to get a foothold on the ball but were unable to make any real attacking headway, with Axel Witsel's booking for a clumsy challenge an embodiment of the frustration within the Russian ranks.
Luciano Spalletti brought on Danny at the break to spark some life into his attack, and the 29-year-old almost had an immediate impact when his dangerous free-kick fell to the feel of Axel Witsel, only for Proto to deny the Belgian with a smart save.
Dennis Praet, a lively presence throughout, provided Massimo Bruno with an opening which was snuffed out by Lombaerts, before some clever interplay between Safari and Lucas Biglia almost carved out a second for Anderlecht a moment later.
Chances were few and far between for much of the match, with Anderlecht all too often winning the battle in midfield to prevent the visitors from making any real headway in the final third while the centre-back duo of Kouyate and Bram Nuytinck were immense at the heart of the hosts' defence.
Anderlecht continued to look the more likely to score and substitute Oleksandr Iakovenko came close to doing just that with ten minutes to go, lashing the ball against the crossbar following Kanu's flick-on, with replays showing that only a crucial touch from Malafeev denied the winger a goal.
Kanu then lashed an effort from the edge of the area wide of the mark before a last-ditch tackle from Anyukov denied him a clear sight of goal inside the box following good work from Mbokani.
Zenit threw men forward late on but were unable to carve out a meaningful chance, and the hosts clung on for a deserved three points, heaping more pressure on Spalletti's already-burdened shoulders.