A 29-year-old man who emerged from the white pick-up truck was shot by a police officer and arrested. Officials later said it was a terror attack.
Media named him as Sayfullo Saipov, an immigrant who came to the US in 2010.
A note was found in the truck that referred to so-called Islamic State, a law enforcement source told CBS News.
The suspect - who had apparently settled in Florida - was taken to hospital.
New York City Mayor Bill de Blasio said it was "cowardly act of terror aimed at innocent civilians".
He added: "We know that this action was intended to break our spirit. But we also know that New Yorkers are strong, New Yorkers are resilient and our spirit will never be moved by an act of violence and an act meant to intimidate us."
President Donald Trump tweeted: "My thoughts, condolences and prayers to the victims and families of the New York City terrorist attack. God and your country are with you!"