A total of 155 lawmakers in the National Assembly voted for the bill with 50 against and seven abstaining, an official said on Friday.
"It went smoothly, there were no protests inside the National Assembly," the official added.
South Korean President Roh Moo-Hyun agreed last year to send troops to Iraq at the request of the United States and urged parliament in December to endorse the troop dispatch for peace-keeping and reconstruction work.
South Korea officials say the troops will be deployed in April.
South Korea has already stationed some 400 non-combat troops in Iraq.
The new deployment will bring the figure to around 3600, officials said.
The sensitive US request for troops came in September, splitting public opinion and triggering demonstrations in South Korea both for and against the dispatch.
Some 600 noisy protesters confronted thousands of riot police outside the National Assembly during the vote on Friday.
A soldier (L) shows the new bullet-
proof jacket to be used in Iraq
The 50-year US-South Korean military alliance was a key factor in the decision to send troops to Iraq.
Some 37,000 US troops are stationed in South Korea under a mutual defence pact to deter communist North Korea from attacking the South.
The decision to send troops to Iraq comes amid a lingering 16-month-old crisis over North Korea's nuclear weapons programme.
Pyongyang has angrily opposed the South Korean troop deployment.