Zapatero made the announcement after the 2008 budget was finally approved by parliament. Under Spanish law, governments at all levels have to call elections in March at the latest.
"The elections will take place on March 9," Zapatero told reporters in parliament, adding that the legislature will be dissolved on Jan. 14 and election campaigns will run through Feb. 22 to March 7 and some 35 million voters will cast ballots.
Zapatero's Socialist Party will be seeking to renew its mandate for another four years after he was nominated as the Socialist candidate at a party meeting on Nov. 25.
Recent opinion polls gave the 47-year-old prime minister an edge of about 2 percentage points over his rival, Mariano Rajoy, 52, leader of the conservative Popular Party.
Zapatero defeated Rajoy in last elections on March 14, 2004, three days after al Qaeda-inspired Madrid train bombings claimed nearly 200 lives.
Zapatero obtained support from many Spaniards as the then ruling conservatives mistakenly blamed the bombings on the armed Basque separatist group ETA despite evidence pointing to al Qaeda avenging Madrid's role in Iraq.
After elected in 2004, Zapatero delivered his election promise by quickly withdrawing Spain's troops from Iraq.
Güncelleme Tarihi: 21 Aralık 2007, 12:22