With this, the BJP now has 100 MLAs in the 182-member Gujarat Legislative Assembly, while the Congress tally has come down to 76. The saffron outfit had won 99 seats in the 2017 assembly polls and the Congress 77.
At the end of the counting of votes, Bavaliya secured a total 90,262 votes as against Nakiya's 70,283, the officials said.
A total 2,146 votes were cast as NOTA, they said.
Polling for the Jasdan Assembly seat was held on December 20 and a voter turnout of 71.27 per cent was recorded.
The by-poll became a battle of prestige between the ruling BJP and the opposition Congress in the wake of the latter winning the just held assembly elections in Madhya Pradesh, Rajasthan and Chhattisgarh.
The by-election was necessitated after Bavaliya, an influential Koli community leader who had won the seat on a Congress ticket in 2017, resigned from the party and also the assembly, and joined the BJP.
Bavaliya, who quit as an assembly member on July 2, was made a Cabinet minister in the BJP government the same day.
As the Congress candidate in 2017, Bavaliya had won over BJP's Bharat Boghara by a margin of 9,277 votes.