In the town of Pereira, 18 people were killed and others were trapped in buildings that collapsed, Mayor Mauricio Salazar told Caracol Radio.
Two people were killed in the town of Manizales, Mayor Jorge Eduardo Rojas said in an interview with Blu Radio.
While Alejandro Eder, mayor of Cali, one of Colombia's largest cities, said preliminary reports showed at least 20 buildings had collapsed there, with people trapped.
He said Cali had requested disaster teams from Bogota and Medellin to aid in rescue efforts.
The quake's epicentre was near San Jose del Palmar, in Choco, a sparsely populated province on Colombia's Pacific coast.
Choco Governor Nubia Carolina Cordoba said there were injuries and significant damage in Quibdo, the provincial capital, and warned residents about aftershocks.
In neighbouring Risaralda province, Governor Juan Diego Patino said Pereira, a major city in Colombia's coffee-growing region, had also suffered serious damage to some buildings.
Colombia's civil aviation authority said flights were suspended at airports in Pereira, Manizales, Quibdo, Armenia, Cartago and Buenaventura, while inspectors checked for structural damage.
The country's disaster agency said it had received reports from nine departments and all 32 departmental capitals where the quake was felt, triggering evacuations and initial reports of damage.
Colombia's geological service revised the quake's magnitude up to 7.4 and said it struck at a depth of 96 km.
The US tsunami warning system said there was no tsunami threat.
Reuters witnesses in the Venezuelan border state of Tachira and the central-western city of Barquisimeto reported the quake had been felt there.
Venezuela was hit by devastating twin earthquakes in June, which killed more than 6000 people, mostly on the coast near the capital, Caracas.
with AP and EFE