France went top in Group D after a rain-delayed encounter.
Menez and Cabaye, with his first international goal, finally put an end to the co-hosts’ resistance after almost an hour of dominance but no breakthrough.
A torrential downpour just five minutes into the match forced referee Bjorn Kuipers to take the teams off the pitch, with crashes of thunder and flashes of lightning lighting up the sky above the Donbass Arena.
Play resumed 55 minutes later but the delay did not seem to affect France, who controlled proceedings without taking advantage.
Paris St Germain midfielder Menez, who replaced Florent Malouda in the starting line-up, was chief culprit as he missed two chances in the first half and had a goal ruled out for offside.
He looked like continuing that form after the break until he eventually found the target and Newcastle midfielder Cabaye ensured they got just reward for their efforts.
Menez had the ball in the net as early as the 16th minute but had strayed offside to receive Franck Ribery’s slide-rule pass.
He then fired over after again being picked out by Ribery, who had robbed Sergiy Nazarenko close to the byline as the midfielder dwelt on the ball too long.
His third chance came from Ribery once more when the Bayern Munich winger latched on to Anatoliy Tymoshchuk’s backpass to cross but Pyatov blocked with his legs.
Ukraine’s first effort produced the best save in the 34th minute when Andriy Shevchenko, two-goal hero of their opening win over Sweden, got behind centre-back Adil Rami to lash a half-volley into the near post, where Hugo Lloris blocked.
But it was a brief respite as Philippe Mexes’ powerful header from Samir Nasri’s free-kick was turned behind by Pyatov.
Menez’s frustrating evening continued after the break when his clever diagonal right-to-left run produced another shooting opportunity, but he could not beat Pyatov from an increasingly narrowing angle.
Shevchenko and Tymoshchuk almost made him pay with long-range efforts, the former driving a shot just past the right-hand angle of Lloris’ goal.
But the persevering Menez finally found a way through in the 53rd minute, skipping past right-back Yevhen Selin to squeeze a left-footed shot inside the post.
Less than four minutes later Cabaye doubled the lead from Benzema’s pass into him at the top of the penalty area, before then being denied by a post from 18 yards after a prolonged passing move.
The victory was France’s first in nine matches at major tournaments, ending a record run set with their opening draw against England.