Alasdair Dickinson scored his first Test try following Max Evans' mazy run after 10 minutes as Scotland made a promising start ahead of Monday's 30-man World Cup squad announcement.
But Italy responded after 24 minutes with a score from Tommaso Benvenuti, converted by Mirco Bergamasco.
Dan Parks, who finished with 13 points, kept Scotland in front with his boot, before Italy scored a second try early in the second half through Fabio Sementazo to cut the deficit.
However, Mike Blair claimed an opportunists score early in the second half and Scotland held on for victory marred by a knee injury to Nikki Walker which saw the replacement wing taken off on a stretcher with three minutes remaining.
The victory meant Scotland claimed a 100% record from their two World Cup warm-up matches following the 10-6 win over Ireland a fortnight ago.
That was a ragged performance, with victory achieved through the one move of class as Joe Ansbro scored a late try.
Today's display was marginally better, but still early-season fare, with two defensive lapses punished by Italy.
There were positives for Scotland ahead of their World Cup Pool B opener against Romania in Invercargill on September 10.
Nick De Luca and Evans performed well in the backs, scrum-half Chris Cusiter came off the bench for his international return following a 17-month absence and Euan Murray steadied a scrum which had seen Dickinson tormented by Martin Castrogiovanni and Moray Low by Andrea Lo Cicero.
Only centre Graeme Morrison was retained from the Scotland team which beat Ireland, while Italy made 12 changes.
Scotland received the kick-off and began at pace before Parks opened the scoring with a third-minute penalty after Italy infringed at a ruck.
The hosts were looking lively and worked their way up to the Italian 22 before Evans wreaked havoc by going on a jinking run.
The wing was tackled but not held and bounced back up before popping inside for prop Dickinson to score his first Test try. Parks converted.
Italy bounced back after Sergio Parisse sparked off a length-of-the-field move by breaking off a scrum in his own 22.
At the halfway line, the ball was worked wide to Benvenuti, who evaded Rory Lamont's tackle to race through and touch down unopposed. Bergamasco added the conversion.
Scotland's scrum was in trouble and disintegrated, but Bergamasco mis-hit a penalty, handing the hosts a reprieve.
From going close to drawing level as the interval approached, Italy then saw their deficit doubled as Parks punished their indiscipline in front of the posts with his second penalty.
Italy moved within a single point after Blair dropped down on a ball kicked through by Benvenuti.
Scotland's defenders were slow to cover back and Italy turned the ball over at the ruck before scrum-half Semenzato wriggled through Vernon's weak attempted tackle to score.
Bergamasco missed the touchline conversion as Italy spurned the opportunity to take the lead for the first time.
But Scotland's lead was soon more comfortable as a result of a fortunate break.
Andrea Masi paused too long over a clearance kick allowing Blair to charge down.
The Scotland scrum-half won the chase for the ball to score and Parks converted.
Scotland made two changes, Murray coming on for Low at prop and Walker for Simon Danielli before Parks added another penalty after 57 minutes as the hosts moved 11 points clear.
Scotland had another opportunity when De Luca beat Gonzalo Garcia in midfield and raced down the left, but Masi ended the move with Scotland's overlap left frustrated.
Parks missed a penalty before he was replaced by Ruaridh Jackson as one of three Scotland changes, Richie Gray and Cusiter also coming on for Nathan Hines and Blair, respectively.
Jackson missed a penalty attempt after Italy infringed at the scrum and Scotland were increasingly frustrated with Italy slowing the ball down at every stoppage.
More trouble was to follow as Walker was taken off on a stretcher with a knee injury and it remains to be seen whether he will be able to be considered for World Cup selection.
Gilbert has released a new line of rugby cleats. The Gilbert Virtuo 8S is part of the exciting new product. Check it out.
The Barbarians are one of the top invitational rugby sides with a long history and classic rugby jersey.
The Nike Tiempo is a solid rugby cleat and one of few styles still made from full-grain natural leather.
The Lions get ready for their matches with this green training jersey. It's what the players wear. Get in the Gear!
A cool looking all black rugby cleat with the high performance adidas is known for. Get in the Gear!
Wear the crest of the British and Irish Lions on your t-shirt. A great look for the summer.
The Lions are ready to get their Australia tour underway. They arrive in Perth on Monday.
The New Zealand All Blacks training jersey for 2013/14. Get in the Gear!
The USA Rugby Pro Alternate rugby jersey is perfect for any fan of the Eagles. Get yours to wear during the summer Test matches.
The NEW All Blacks 2013/14 jersey has arrived at World Rugby Shop. Dare to wear the colors of the All Blacks.