The motion was adopted by a decisive vote of 128 to 9, with 35 abstentions, whereas 21 countries were absent.
Thursday's vote, while a victory for the Palestinians, was significantly lower than its supporters had hoped for, with many forecasting at least 150 “yes” votes.
Seven countries — Guatemala, Honduras, Togo, Micronesia, Nauru, Palau and the Marshall Islands — joined Israel and the United States in opposing the measure.
Among the 35 countries that abstained were Argentina, Australia, Canada, Croatia, the Czech Republic, Hungary, Latvia, Mexico, the Philippines, Romania and Rwanda.
Ukraine, which supported the draft resolution at the Security Council, was among 21 countries that did not turn up for the vote.
The measure was sent to the General Assembly after it was vetoed by the US at the Security Council on Monday, although all other 14 council members voted in favor.
“The United States will remember this day,” US Ambassador Nikki Haley told the assembly.
“America will put our embassy in Jerusalem ,” Haley said. “No vote in the United Nations will make any difference on that," she added.
“When we make generous contributions to the UN we also have a legitimate expectation that our goodwill is recognised and respected,” she added.
While resolutions by the General Assembly are non-binding, a strong vote in support carries political weight.
US President Donald Trump had warned ahead of the vote in the 193-nation assembly that “we are watching” and threatened reprisals against countries that back the measure.
The threat had raised the stakes in the vote and sparked criticism at Trump's tactics, which one Muslim group called bullying or blackmail.
Trump went a step further than US Ambassador Nikki Haley who hinted in a tweet and a letter to most of the 193 UN member states on Tuesday that the US would retaliate against countries that vote in favour of a General Assembly resolution calling on the president to rescind his decision.