Alexander Kerzhakov put the Russians in front on the hour mark, having been denied by the post in the first half.
Roman Shirokov made it 2-0 with 15 minutes remaining and added his second at the death to give the Dick Advocaat-coached team a win in the Euro 2012 warm-up game.
Manchester City forward Mario Balotelli played the entire game but could not find a breakthrough as Italy, who had gone unbeaten in qualifying, slipped to their third straight friendly defeat.
Italy coach Cesare Prandelli had wanted a strong performance as his team’s game against Luxembourg earlier in the week was cancelled following an earthquake in the northern part of the country.
But the Azzurri struggled defensively and were made to pay in their last game before they take on Spain on June 10.
Italy had a nightmare week, with a match-fixing investigation disrupting their preparations.
Prandelli played Balotelli alongside Antonio Cassano in attack and Italy almost went ahead early on when Balotelli chested down Andrea Pirlo’s long ball and his right-footed strike forced Russia goalkeeper Vyacheslav Malafeev to make a save.
Russia came closest in the ninth minute when Shirokov found Kerzhakov in the left side of the area and his strike beat Italy goalkeeper Gianluigi Buffon but struck the post.
The Russians continued to press forward and on the half-hour mark, Konstantin Zyryanov wasted a good chance when he sent the ball high and wide from 10 yards out.
Andrey Arshavin then fed Yuri Zhirkov and his goalbound effort was kept out by Buffon.
Before half-time, Pirlo’s free-kick went just over the bar.
Both teams made a goalkeeping substitution after the restart, with Morgan De Sanctis replacing Buffon and Igor Akinfeev taking Malafeev’s place.
Italy showed more spark up front but Balotelli’s header from Claudio Marchisio’s cross was off target.
Marchisio should have put Italy in front after he beat the offside trap and surged into the area but he was unable to beat Akinfeev in a one-on-one.
Cassano then missed an easy tap-in from Balotelli’s cross as Italy wasted another good chance.
Russia took the lead when Shirokov found Kerzhakov in the box and his right-footed shot towards the bottom left corner of goal beat De Sanctis.
Prandelli brought on Antonio Di Natale and Sebastian Giovinco to spark his team but Russia struck again.
A misunderstanding between Leonardo Bonucci and De Sanctis allowed Arshavin to intercept a back-pass from Christian Maggio and the ball ended up falling to Shirokov, who made no mistake when faced with an unguarded goal.
Italy’s night got worse when Maggio failed to clear substitute Alexander Kokorin’s cross-shot, leaving an unmarked Shirokov to head the ball past De Sanctis.