- BJP lost the most-watched Kairana seat in UP, along with Noorpur
- Retained 1 Lok Sabha seat in Maharashtra, 1 assembly seat in Uttarakhand
- BJP allies Nitish Kumar and Akalis lost 1 seat each in Bihar and Punjab
Here are the top 10 developments to the story
The biggest shock for the BJP came from Kairana, which it had won in 2014 with a huge majority. It is strike three for the party against the opposition after it lost its strongholds Gorakhpur and Phulpur to the Samajwadi Party-Mayawati combo in March. Samajwadi Party leader Akhilesh Yadav said the victory in Kairana and assembly seat Noorpur was a win for the farmers, the neglected, the poor and the Dalits. " I also thank all other political leaders who came together and stood together to ensure that we win," he said.
The BJP kept one and lost one Lok Sabha seat in Maharashtra. It retained the Palghar seat, challenged by its estranged ally Shiv Sena. It lost the Bhandara Gondiya seat to Sharad Pawar's Nationalist Congress Party (NCP), which had lost the seat in 2014.
The BJP's allies did no better - Nitish Kumar's party lost face against an RJD led by Tejashwi Yadav in Bihar's Jokihat. The Shiv Sena was at the receiving end in Maharashtra's Palghar, the lone parliamentary seat the BJP won, and the Akali Dal lost in Punjab. The BJP said by-polls are fought on "local issues". "We would get more seats in 2019 than 2014," BJP leader Sambit Patra said.
Lalu Yadav's Rashtriya Janata Dal (RJD) scored a point in Jokihat, where by-polls were held because a lawmaker of Chief Minister Nitish Kumar's Janata Dal United (JDU) quit in protest after he swapped allies and reunited with the BJP. RJD leader Tejashwi Yadav said the coming together of Akhilesh Yadav, Mayawati and the Congress has "helped" his party in Bihar.
BJP ally NDPP won one parliamentary seat in Nagaland that was with the Congress.
The Congress wrested Punjab's Shahkot from BJP ally Shiromani Akali Dal and retained Meghalaya's Ampati, becoming the single largest party in the northeastern state. The party said the by-polls results were the people's mandate against the four years of the Narendra Modi rule and the "beginning of the end" of BJP's empire.
In Kerala, the Left party retained the Chengannur seat, wrested two years ago. Chief Minister Pinarayi Vijayan projected the outcome as a referendum on the Left Democratic Front's governance in the last two years.
Regional party Jharkhand Mukti Morcha retained Silli and Gomia in Jharkhand. JMM chief Hemant Soren described it as victory of opposition unity and said "its heat is bound to reach Delhi."
The Congress also retained Karnataka's Rajarajeshwarinagar, where assembly elections were put on hold earlier this month after the discovery of hundreds of voter ID cards from a flat in Bengaluru.
The Trinamool Congress has retained Bengal's Maheshtala. After the results were announced, Bengal Chief Minister Mamata Banerjee said, "UP is the gateway and beginning of the end has started from UP" and underscored the role played by the regional parties and the federal front.