Mr Swinney won 49.5 per cent of the vote, a slight increase on 2016 results.
He beat the Conservatives Murdo Fraser by 19,860 votes to 15,807, with Labour’s Ryan Smart and Liberal Democrat Peter Barrett lagging behind with just over 10 per cent of the vote between them.
Mr Swinney has served as Deputy First Minister since 2014 and Education Secretary since 2016.
Following the resignation of his former colleague Roseanna Cunningham in Perthshire South, Mr Swinney has now become the longest continuously-serving MSP.
He was elected as MSP for Perthshire North in 2011, having previously represented North Tayside since 1999.
“I'm absolutely delighted with the result,” Mr Swinney told the BBC.
"This is an emphatic endorsement of my candidacy here in Perthshire North.
"We had a larger gap between the SNP and the conservatives in this election compared to the last election, so I'm delighted.
"There's also been a very high turnout of just short of 70 per cent of the electorate. Despite all the challenges of Covid, the people of my constituency have engaged substantially in this election.
"They've come out to vote, they’ve posted their ballots, and I’m very very grateful to all of them for voting. And I'm delighted to be returning with an increased majority and an increased gap between ourselves and the conservatives.”
Mr Swinney said it was too early to tell if the SNP would have a majority, but it was “beyond any doubt” that it would be the leading party.
"I'm very proud so far of my party's performance, and I have every reason to believe that I'll be proud of my party's performance over the course of today and tomorrow,” he said.
So far six seats have been declared, with Orkney held by Liberal Democrat Liam McArthur, and the SNP holding Aberdeen Donside, the Western Isles, Clydebank and Milngavie, Perthshire North and Dundee City West.
Vote counting will take longer than usual this year amid Covid-19 restrictions, and this year also saw a record number of postal votes cast.
The Electoral Management Board expects 48 of the 73 constituencies to be declared on Friday.