Maldonado started from the pole and withstood the challenge by Alonso's Ferrari to take the 66-lap race at the Catalunya Circuit by 3.1 seconds.
Maldonado, making his first visit to the podium, is the first Venezuelan winner in F1. This was Williams' 114th triumph but first since the 2004 Brazilian GP.
"It's a wonderful day for me and the team. An unforgettable race," said Maldonado, who was hoisted onto the shoulders of Alonso and Kimi Raikkonen before being doused in champagne. "It was a tough race, with the strategy and a couple of laps we were struggling. But the car was so competitive from the first lap."
Maldonado's victory provided a flourish for Frank Williams as the team celebrated its longtime team principal's 70th birthday this weekend. Williams' celebration speech, however, was cut short. He was led from the garage when the fire broke out.
One person was airlifted to hospital with severe burn wounds while five more were treated at a local hospital for smoke inhalation. Ten of the injured were treated for smoke inhalation at the track before being released. The Caterham team said four of its members were among those injured as the fire spread to neighboring team boxes.
Raikkonen made up nearly 20 seconds over the final stretch to finish 3.8 seconds behind Maldonado in third, ahead of Lotus teammate Romain Grosjean. Lewis Hamilton, demoted from pole to last place in the 24-car field because of a rule breach, finished eighth for McLaren.
Kamui Kobayashi of Sauber was fifth, ahead of two-time defending F1 champion Sebastian Vettel, who charged past Nico Rosberg's Mercedes to take sixth after the Red Bull driver had to do a drive-thorugh penalty during the race.
Maldonado drove with confidence down the final stretch despite Alonso bearing down on him. It was Alonso's fourth runner-up finish in Barcelona to go with a 2006 victory.
"We tried a couple of times to get in front but it wasn't possible," Alonso said.
Michael Schumacher, in the midst of a terrible season, failed to finish for the third time. He ran into the back of Bruno Senna's Williams on lap 14, knocking the Brazilian out of the race.
Schumacher hasn't won a race since the 2006 Chinese GP, with his last top-three finish also coming in Shanghai. His best finish for Mercedes has been fourth.
Hamilton finished ahead of teammate Jenson Button, with Force India driver Nico Hulkenberg taking the last two points in 10th.
Alonso provided home fans with a steely start as the two-time champion kept his inside line, under pressure from Maldonado. The Spaniard led around the first corner with Raikkonen moving ahead of Grosjean to sit third.
Hamilton overcame a poor first stop when his crew failed to clear a tire quickly to stay in the points. He moved as high as fifth after the second round of stops, when Maldonado took over the lead from Alonso, with Raikkonen still ahead of Grosjean.
Maldonado's third stop cost him valuable time. He returned to the track behind Raikkonen, who took the lead when Alonso stopped for the third and final time. But Maldonado passed Raikkonen on lap 47 to open a gap on Alonso, who passed the Finn one lap later to stay on Maldonado's back.
Hamilton stayed third in the driver standings ahead of Raikkonen going into the Monaco GP on May 27.
"It's a great opportunity for us to be strong again," Maldonado said. "Consistency will be the most important thing this championship."
More Sports Headlines
Snohomish mixed martial artist returns to her first love Mariners beat Twins 4-3 in 11 innings 4:03 p.m. Charles scores 29 points, Liberty beat Storm 78-62 4:49 p.m. Park wins Women's British Open, captures 4th different major 4:38 p.m. Perry wins 2nd straight Champions Tour's 3M Championship 4:33 p.m. Merritt shoots 67 to win Quicken Loans National by 3 shots 4:30 p.m. Triple Crown winner American Pharoah wins $1.75 million Haskell Invitational 4:25 p.m. Bills' Ryan names Incognito starting left guard 4:22 p.m.
Our new comment system is not supported in IE 7. Please upgrade your browser here.