BJP candidate C P Yogeshwar won by 12,000 votes in Chennapatna over his nearest Janata Dal-Secular rival S L Nagaraj, dashing the H D Devegowda-led party's hopes of retaining the seat.
In Jagalur (ST) constituency, the BJP's S V Ramachandra defeated his rival H P Rajesh (Ind and a BJP rebel) by 4,433 votes. In Bangarpet (SC) constituency, M Naryanaswamy of the BJP defeated K M Naryanaswamy of Congress by 4,044 votes.
The BJP wrested Bangarapet and Jagalur seats from the Congress and Chennapatna from the JD-S.
Upset over the defeat, JD-S candidate C Venkateshappa announced his decision to quit the party.
The outcome has come as a big boost to BJP as the opposition campaign to reject 'defectors' came to nought.
With Friday's electoral outcome, the BJP's strength in the 224-member assembly has risen to 109. The BJP also has the support of the lone Independent Varthur Prakash. The Congress continues with 71 and the JD-S 26.
There are 17 vacancies in the house following the disqualification of 16 MLAs -- 11 BJP and five independents -- after they withdrew support to the Yeddyurappa government. Karadi Sanganna of the JD-S has resigned his Koppal seat and already joined the BJP.
In October 2010, S V Ramachandra and M Naryanarayana Swamy of the Congress and M C Ashwath of the JD-S quit their parties and joined the BJP.
Ramacahndra and Narayanaswamy re-contested, but Ashwath did not.
Yogeshwar, who had lost the earlier bye-election to the JD-S from Chennapatna, became successful this time.
The Congress's defeat in Bangarpet is seen as a major loss of face for Minister of State for Railways K H Muniyappa, who hails from Kolar district.