Spanish Prime Minister Jose Luis Rodriguez Zapatero has announced the biggest cabinet shake-up since his Socialist party came to power in 2004.
The reshuffle aims to boost the party's ratings after the introduction of unpopular austerity measures.
Interior Minister Alfredo Perez Rubalcaba, who has led the campaign against Basque separatist group Eta, is promoted to deputy prime minister.
Health Minister Trinidad Jimenez was handed the job of foreign minister.
This cabinet shake-up is all about political survival, the BBC's Sarah Rainsford in Madrid says.
The economic crisis has done great damage to the Socialists, who are trailing 13 points behind the conservative opposition in opinion polls, she adds.
"The time has come for a major overhaul of the government," Mr Zapatero told a news conference in Madrid on Wednesday.
"It will be a government of reforms, of definitive economic recovery and employment."
In another major change to the cabinet line-up, Valeriano Gomez replaced Labour Minister Celestino Corbacho, in what experts see as an attempt to restart talks with trade unions.
The unions have threatened strikes to protest against the labour market reforms that make it cheaper and easier to lay off workers.
Unemployment in Spain currently stands at 20% - twice the EU average.
The reshuffle comes as the cabinet tries to push through an austerity budget that would cut spending by nearly 8% to 122bn euros ($164bn, £104bn) in 2011.
Spain is due to hold general elections in 2012, but some analysts say a defeat on the budget would almost certainly force Mr Zapatero to call snap polls.