Tory candidate Kathleen Baird won the vote in the Almond and Earn ward in the third round of counting. The SNP finished second.
The contest was triggered by the death of independent councillor Alan Jack, who was originally elected as a Tory.
Scottish Conservative leader Ruth Davidson said the result was due to "a tremendous effort from our whole team".
Ms Baird previously served on the council for 13 years, until 2011.
The Scottish Conservatives have gained a seat on Perth and Kinross Council following a by-election.