It happened on the famous Promenade des Anglais after a firework display. The driver was shot dead and guns and grenades were found inside the lorry.
President Francois Hollande said the attack was of a “terrorist nature”.
He extended a state of emergency by three months.
France had been on high alert following last November’s attacks in Paris in which 130 people died and hundreds were wounded.
The state of emergency had been due to end on 26 July.
“France is badly hit,” Mr Hollande said, adding that “we need to do everything we can to fight against” such attacks.
“All of France is under the threat of Islamic terrorism,” he said, adding that “several children” were among those killed.
About 50 people were injured, 18 of them critically, in the incident on Thursday, which was Bastille Day – France’s national day.
Prosecutor Jean-Michel Pretre said the lorry drove 2km (1.2 miles) through a large crowd, the AFP news agency reported.
One image on Twitter showed about a dozen people lying on the street.
Interior Ministry spokesman Pierre-Henry Brandet denied earlier reports of hostage situations and said the driver of the lorry had been “neutralised”.
He added that officials were investigating whether the driver acted alone.
No group has so far claimed responsibility, however prosecutors said the inquiry would be handled by anti-terror investigators.
Some reports spoke of shots being exchanged between police and the occupants of the lorry but these have not been confirmed.
Social media video showed people running through the streets in panic following the incident.
A journalist with the Nice Matin newspaper reported from the scene that there was “a lot of blood and without doubt many injured”.
A reporter for the AFP news agency said the incident took place as the firework display was ending, adding: “We saw people hit and bits of debris flying around.”
Another image on Twitter showed a white lorry stopped in the middle of the promenade with damage to its front, and four police officers observing it while taking cover behind a palm tree.
One eyewitness told BFM TV: “Everyone was calling run, run, run there’s an attack run, run, run. We heard some shots. We thought they were fireworks because it’s the 14th of July.
“There was great panic. We were running too because we didn’t want to stick around and we went into a hotel to get to safety.”
Another witness, Roy Calley, told the BBC that there were “thousands of people on the promenade” when the incident happened.
“The police have completely taken over the city, the promenade has now been closed down. Everybody was physically pushed away from the site and told to get back in no uncertain terms by the police.”
“I live 200m from the promenade and it took nearly one hour 30 minutes to get back to my flat because all the roads have been closed down.”
US President Barack Obama condemned “in the strongest terms” what he said appeared to be “a horrific terrorist attack in Nice”, the White House said.
The president had been briefed about the situation “and his national security team will update him, as appropriate”, National Security Council spokesman Ned Price said.
On Friday, flags in France will be flying at half-mast, and Nice’s jazz festival has been cancelled.