Treviso had led after Ludovico Nitoglia's try but eventually came away with nothing as they failed to recreate the form which saw them thump Newport Gwent Dragons a week ago.
The result sets up Edinburgh perfectly for next week's trip to London Irish as the Heineken Cup kicks off, while Treviso face the tough task of travelling to Premiership champions Saracens.
Leonard got his side off to the perfect start as he slotted an early penalty after just ten minutes.
There had already been time for Kris Burton to miss one penalty in the fourth minute, but the Australian-born Azzurri fly-half made amends just before the quarter-hour with a well-struck drop goal to make it 3-3.
Leonard added his second penalty after 28 minutes, but Treviso took full advantage when Scotland centre Nick De Luca, in his second start for the Gunners this season, was yellow-carded.
Treviso full-back Nitoglia scored his third try of the season to put the Italians in front for the first time with two minutes to go before half-time.
But Leonard gave Edinburgh back the lead with a third penalty on the stroke of half-time to make it 9-8 after Lorenzo Cittadini had also been sent to the bin.
Having missed another opportunity immediately after the break, Leonard did manage to stretch the visitors' lead on 46th minute with his fourth penalty.
That was cancelled out by Burton's first penalty of the day, but Leonard matched him with another three points with just over 15 minutes to go to make it 15-11.
The Gunners then made the decisive break as Scotland openside flanker Rennie burrowed over for only his third try in Celtic League history with ten minutes remaining.
And despite the Italians' best efforts they were not able to break through to earn even a losing bonus point.
|Benetton Treviso Score Card|
|Edinburgh Rugby Score Card|