Fernando Alonso secured his second win of 2010 under controversial circumstance at Hockenheim, benefiting from a thinly veiled team-order from Ferrari requesting Felipe Massa to let him past.
Massa came home second after leading the first 48 laps of the 67 lap race.
Vettel was passed by both Ferrari drivers off the line, but came home in a strong third place.
Lewis Hamilton and Jenson Button leave Germany still first and second in the drivers championship, but could only manage distant fourth and fifth place finishes respectively.
Mark Webber was sixth ahead of Kubica, and they were followed home by the two Mercedes drivers – Nico Rosberg again ahead of Michael Schumacher. Vitaly Petrov collected the final points position.
Massa got into the lead off the start as Vettel went right across the track as the five red lights went out, squeezing Alonso towards the pit wall. Massa, who started the race from third place, was in the lead by the first corner simply from just driving around the duelling pair.
Behind them, Mark Webber retained fourth position into the first corner, but was passed by Lewis Hamilton into the Turn 6 chicane on the opening lap.
Local hero Michael Schumacher had a good start, getting up to eighth in the first lap. He made up three places and got past teammate Nico Rosberg.
Sebastien Buemi was forced to retire after his rear-wing was damaged by his Toro Rosso teammate Jaime Alguersuari on the opening lap.
There was chaos down at Force India in the early stages. Liuzzi came in for an early stop, as did Sutil. Unfortunately, the team managed to put the wrong sets of tyres on their two cars. The FIA strictly prohibited drivers using each other's tyres, and so Force India had to call both drivers in again to rectify the situation. This dropped them both down to the back of the field.
Meanwhile, towards the front, the two Ferraris were showing good pace, with both Massa and Alonso exchanging fastest laps. Vettel was 3.6 seconds off the leader but the end of Lap 10, but the top five were still covered by less than 10 seconds.
Vettel was the first to pit at the beginning of Lap 13, switching to the hard Bridgestone compound. Red Bull had found the German some clear air to exit into, and Ferrari were forced to react.
It was Alonso who was called in on the next lap as Ferrari was forced to react. Mark Webber followed the Spaniard in, but he managed to exit the pits in ninth, in between a battle between Nico Rosberg and Kamui Kobayashi.
Massa pitted on the following lap, followed by Lewis Hamilton and, further down the road, Michael Schumacher. Hamilton came out between Kubica and Rosberg, but crucially kept position over Webber.
Jenson Button, who was still yet to stop, took over the race led, and Massa rejoined the field in second place, keeping in front of Alonso. Massa struggled initially with the harder tyre, and his Spanish teammate was all over the back of him for a period after the pit stops.
Ferrari would obviously have preferred Alonso to lead any potential 1-2 this afternoon, because of his superior points tally in the championship. They tried to get Alonso past his teammate in the pit stops by bringing him in for his tyre change first. This had failed, and now Alonso, who was getting increasingly frustrated behind the Brazilian, needed to pass Massa on the track if he wanted the race win.
Kubica pitted on Lap 18, allowing Hamilton back past him. The Renault driver came out just in front of Michael Schumacher, and an interesting battle ensued between the two. However, there was no luck for the seven-time world champion on Kubica's outlap.
On Lap 21 the Ferrari battle provided more drama as Alonso came close to getting past Massa again. The Brazilian was slow to lap compatriot Bruno Senna, and Alonso nearly managed to make a move stick.
Button finally relinquished the lead at the end of Lap 22 as he made his mandatory pit stop. The world champion came out in fifth, just behind his teammate Hamilton, and crucially ahead of Mark Webber.
Now that the front runners had made their scheduled pit stops, the order showed Massa in the lead, less than a second ahead of Alonso. Vettel was third and Hamilton was fourth, about 8 seconds behind the German. Button was close behind his teammate, and Webber was sixth, just 1.5 seconds behind the McLaren.
Massa responded to pressure from his teammate by setting a series of consecutive fastest laps, bringing the gap up to over 3.3 seconds. On Lap 28 Alonso responded, and continued to respond, but Alonso persisted and the gap was back below three seconds.
Behind the Ferraris, as the race was reaching half distance, Sebastian Vettel was the only driver who could realistically challenge the leader. However, he was nearly four seconds behind the prancing horses. Hamilton was a distant fourth.
Nico Hulkenberg pitted from eighth place after 34 laps, having done his entire opening stint on the super soft tyre. Pedro de la Rosa in seventh was now the only driver on the lead lap who had not yet stopped, but he started the race on the hard compound.
At the end of Lap 45, the gap between the Ferraris was just under a second. Vettel had gained some ground on Alonso, and currently held the fastest lap. However, the German was still 5.6 seconds behind the Spaniard. Hamilton and the rest of the pack were dropping further back from this trio, and Webber, who was still in sixth place, was nursing a problem of excess oil consumption.
On Lap 48, Massa's race engineer Rob Smedley gave Massa a clear message over the radio: “Fernando is faster than you. Can you confirm you understand that message”. On the next lap, Alonso easily passed Massa.
“Ok mate, good lad. Just stick with it now. Sorry” was the next message broadcast between Smedley and Massa. Smedley didn't seem at all happy with having to deliver that message to his driver.
Some will interpret this move as a blatant team order, some will say that Ferrari had to do something like this for the sake of their championship campaign. One thing is certain: there will be much discussion of this after the race, with everyone offering some sort of opinion on Ferrari's actions.
Despite the air of controversy settling over Hockenheim, there was still a race on. Now that Alonso was past Massa, he pulled out a lead of the Brazilian. Vettel set a few fastest laps, bringing himself into second play for second place. The rest of the field were far enough behind not to both the podium places.
Ten laps after the Ferrari deed was done, Alonso had a 3.0 second lead over his teammate, but Vettel was just 1.4 seconds behind Massa. Vettel continued to set fastest laps and, five laps from the end of the race, was just a second behind the Ferrari. Massa was responding though, and it looked as though any hope Vettel had of taking second place was quickly fading.
Ferrari got their first 1-2 since the first race of the season in Bahrain. Vettel came third, collecting the fastest lap as he crossed the line.