Police Commissioner Mike Bush said four suspects were in custody - three men and a woman - but added: "Let's not presume the danger is gone."
Bush said there were "significant" and "multiple" fatalities.
Sam Clarke, a reporter with TVNZ, spoke with several people inside the Masjid Al Noor mosque when the shooting began. He told Al Jazeera a man entered with an automatic weapon and began firing.
"A gunman - dressed in black with a helmet carrying a machine gun - came into the back of the mosque and started firing into the people praying there," said Clarke.
Police confirmed a second shooting occurred at the Linwood mosque during Friday prayers in the South Island city, but no details were immediately available.
"We're dealing with an evolving situation across multiple sites," New Zealand's Prime Minister Jacinda Ardern said at a news conference. "This is, and will be, one of New Zealand's darkest days."
Authorities have not described the scale of Friday's shootings but urged people in central Christchurch to stay indoors. Police warned worshippers not to visit mosques "anywhere in New Zealand".
Dressed in black
Witness Len Peneha said he saw a man dressed in black enter the Masjid Al Noor mosque and then heard dozens of shots, followed by people running from the mosque in terror.
He said he also saw the gunman flee before emergency services arrived.
Peneha - who lives next to the mosque - said he went into the building to try and help. "I saw dead people everywhere."
One man in the mosque, with blood stains all over his clothes, said he hid under a bench as the shooting took place. He said about 50 people were inside the building.
Clarke said some managed to escape through windows and doors but "many people had been hit, some as young as 16".
About 10 to 15 people were seen outside the mosque, "some alive, some dead", he said.
"It was unbelievable. I saw about 20 people, some dead, some screaming," one eyewitness told local television.
"I saw on the floor so many bullet shells, hundreds. I saw one guy trying to run out and he was shot dead."
There were reports one of shooters livestreamed his attack and left racist literature behind at the scene.
"Police are aware there is extremely distressing footage relating to the incident in Christchurch circulating online," a police statement said. "We would strongly urge that the link not be shared. We are working to have any footage removed."
Commissioner Bush said local police officers apprehended the four suspects. "There's been some absolute acts of bravery," he said without elaborating.
"I won't assume there aren't others but I don't have any information to that effect," Bush told a press conference.
He said a number of bombs were detected and neutralised on the attackers' automobiles.
"There were a few reports of IEDs strapped to vehicles which we were able to secure," he said, referring to improved explosive devices.
ESPN Cricinfo reporter Mohammed Isam said members of the Bangladesh cricket team, who are set to play a test match in Christchurch on Saturday, escaped from the mosque.
Mario Villavarayen, strength and conditioning coach of the Bangladesh cricket team, was quoted by the New Zealand Herald as saying the team was close to where the shooting occurred, but was safe.
"The players are shaken up but fine," Villavarayen was quoted as saying.
Peneha described the scene at Masjid Al Noor as "unbelievable".
"I don't understand how anyone could do this to these people, to anyone. It's ridiculous. I've lived next door to this mosque for about five years and the people are great, they're very friendly. I just don't understand it," he said.
Muslims account for just one percent of New Zealand's population, a 2013 census showed.
"Many of those who would have been affected by this shooting may be migrants to New Zealand," Ardern said.
"They may even be refugees here. They have chosen to make New Zealand their home and it is their home ... they are us. The persons who perpetuated this violence against us ... have no place in New Zealand."
Mass shootings in New Zealand are exceedingly rare. The deadliest in modern history occurred in the small town of Aramoana in 1990, when gunman David Gray shot and killed 13 people following a dispute with a neighbour.