The BJP targeted West Bengal heavily during campaigning but it was comfortably held by the incumbent, Mamata Banerjee, a fierce Modi critic.
Mr Modi has been accused of focusing on polls rather than the pandemic.
Elections also went ahead in Assam, Tamil Nadu and Kerala states as well as the territory of Puducherry.
The party held power in the north-eastern state of Assam but failed to make major gains elsewhere.
For 10 straight days, daily cases in the country have topped 300,000. It recorded more than 360,000 new cases and 3,417 deaths on Monday. On Sunday, India set a new record for daily deaths, with 3,689 recorded. Hospitals are facing dire shortages of beds and medical oxygen, with many Indians resorting to desperate pleas on social media to secure help.
Campaign rallies and voting have been blamed for the surge in cases.
Mr Modi and his home minister made dozens of speeches in West Bengal and were accused of focusing on the polls rather than the pandemic.
With almost all the results counted, the Trinamool Congress party (TMC) led by the state's Chief Minister Mamata Banerjee has won more than 200 seats in the 294-seat assembly.
The results are set to make Ms Banerjee the leader of West Bengal for a third time. She is also India's only woman chief minister.
Celebrating the win, she said West Bengal had "saved" India with the result and tackling Covid-19 would be her first priority.
Victory was soured by the loss of her seat in Nandigram to a former aide turned BJP defector. She has said she will challenge the result in court but may have to run again to remain chief minister.
West Bengal, home to 90 million people and the city of Kolkata, is of particular interest to election watchers. It is one of the few states that have never been ruled by Mr Modi's Hindu nationalist BJP.
Despite the defeat, this vote saw the BJP win nearly 80 seats to become the main opposition party. In the 2016 vote, the party had won just three seats there.