The victorious Spaniard finished three places ahead of Red Bull's title leader Vettel, who suffered with tyre wear and saw his lead to Alonso reduce by a factor of 13 points, to 17 points after five races.
"We have only had five races and there have been some ups and downs but we know we have the car to fight with the top cars," Ferrari's Alonso said on the podium.
"If we (continue to) do well we can compete for the championship."
Lotus' ever-consistent Kimi Raikkonen finished second, and is now just 4 points behind Vettel for the championship.
As ever in 2013, and arguably even more so this weekend in Barcelona, the race was all about managing the heavily degrading Pirelli tyres.
As predicted by many in the paddock, qualifying dominators Mercedes reversed down the grid in the race as they burned through the Italian rubber.
Pole sitter Nico Rosberg finished sixth, and Lewis Hamilton scored no points at all.
"We both went backwards," Hamilton told the BBC, "but I went back a long, long way, and I don't know why. We have got a lot of work to do."
Four pitstops per driver, and nursing the disintegrating rubber in between, was the order of the day on Sunday, which added up to well over 80 pitstops for the entire race.
"I've had enough of the 'T'-word," said Sky commentator and former driver Martin Brundle.
Red Bull boss Christian Horner said: "When you are telling drivers not to push because we are saving tyres, it isn't great for the sport of for the fans.
"We need to push the drivers harder and allow them to drive properly."
Indeed, immediately after the chequered flag on Sunday, Pirelli's Paul Hembery acknowledged the problem and hinted changes are on the way.
"Today was too many stops, we got it wrong, too aggressive," he wrote on Twitter.
"We will make changes, probably from Silverstone."