The blast occurred when owners of medical shops were demonstrating against amendments to a law governing drug sales in Punjab province.
Among those killed were senior police officers. Dozens of people were hurt.
Jamaat-ul-Ahrar, a Pakistani Taliban splinter group, said it had carried out the attack.
It said it was in response to Pakistani military operations.
"The blast was so powerful. I saw the injured and bodies, saw flames surrounding the blast site, people were crying," eyewitness Muhammad Tariq told the AFP news agency.
Hundreds of people had been attending the demonstration near the provincial assembly building.
There are fears that the death toll will rise further.
Lahore has been repeatedly targeted by militants in recent years.
In March 2016, at least 69 people - including children - were killed in an explosion at Lahore's public park. It was crowded with families, some celebrating Easter.
A Pakistan Taliban faction later said it carried out the attack.
A suspected suicide bomber has targeted a protest rally in Pakistan's eastern city of Lahore, killing at least 11 people, local officials say.