The New Democrats won a majority government in the British Columbia election on Saturday as voters reward John Horgan with a second term after he took a gamble on calling an election during the COVID-19 pandemic.

With about three quarters of the polls reporting results, the NDP had won enough seats to form a majority government.

The NDP also had a firm grip on the popular vote throughout Saturday night, holding about 45 per cent to the Liberals 35 per cent and the Greens at 16.

The win makes Horgan the first two-term NDP premier in B.C. history.

Horgan, Liberal Leader Andrew Wilkinson and the Green party's Sonia Furstenau retained their seats.

The NDP won 46 seats and were leading in another eight ridings. The Liberals won 26 seats and were leading in three, while the Greens won three seats.

The Greens picked up their first seat off Vancouver Island while the Liberals lost in key battleground districts.

Several cabinet minister are returning to the legislature, including Health Minister Adrian Dix, Attorney General David Eby, Advanced Education Minister Melanie Mark, Environment Minister George Heyman and Housing Minister Selina Robinson.

Liberal incumbents Mike de Jong, Ian Paton, Shirley Bond and Todd Stone were also among those re-elected.

Green incumbent Adam Olsen was re-elected and Jeremy Valeriote also picked up the party's first seat outside Vancouver Island, in the West Vancouver-Sea to Sky electoral district previously held by the Liberals.

Olsen said Saturday there's a role for the Green party in the legislature.

"Our goal was to grow," he said. "I think what we saw over the last five weeks is we're prepared to climb that hill."

Incumbent Laurie Throness was leading in Chilliwack-Kent. He was officially listed as a Liberal on the ballot but he resigned from the party midway through the campaign to become an Independent after coming under fire for likening free birth control to eugenics.

Horgan dissolved his minority government a year before the province's fixed voting date and his decision to call a snap election emerged as a key issue in the middle of the COVID-19 pandemic.

Mail-in-ballot requests surged during the pandemic, with the latest figures from Elections BC showing more than 720,000 were sent out and nearly 498,000 returned.

Elections BC says it hopes to deliver the final results by Nov. 16, but the date isn't firm as it's unclear how much time will be needed to count the mail-in ballots. Close to two million people voted in the 2017 election.

Horgan was branded a political opportunist by Wilkinson and Furstenau for risking an election during the pandemic when they said people needed stability.

But Horgan said he called the election to give the province a chance at the certainty of a majority government in uncertain times.

At dissolution, the NDP and Liberals were tied with 41 seats in the legislature, while the Greens held two seats, there were two Independents and one seat was vacant.

The campaign featured promises for more affordable daycare and improvements to long-term care, as well as different ideas on ways to spur the economy after the pandemic subsides.

The pandemic meant the election was mostly fought online. Gone were rallies, replaced by virtual town halls. Handshakes turned into elbow bumps.

The NDP platform was largely built on the party's record and promises to continue what it started, including expanding $10-a-day child care and implementing a rent freeze until the end of next year. There was also a promise to provide a $1,000 recovery benefit for families with annual household incomes under $125,000.

The Liberals wanted to cancel the provincial sales tax for one year at a cost of $7 billion and eliminate the small business income tax to help with the economic recovery from COVID-19.

Furstenau argued for another minority government, telling voters not to give all the power to one party. She campaigned on the influence the Greens have had on policy, particularly on the government's transition to renewable energy in its Clean BC plan.