That sounds like spaceship physics rather than car physics. Cars DO go in the direction they face unless you turn so fast the momentum is enough to lose friction. Once that happens the above method should be fine enough. But mostly it boils down to switching between the two types of friction.
"Spaceship physics" is still what's required to make it act like a real car. Cars go in the direction they're facing because there is friction constantly pushing back against 'slide' movements. So if you create a slippery 'spaceship' and then add tire friction, you've got a car.
e.g. quick idea of basic physics, this time starting with force, not velocity
car.force = (0,0)
for each wheel
slideFrictionAmount = 1.0 - abs( dot( wheel.forward, car.velocity ) );//1 when perpendicular, 0 when parallel
car.force += -velocity * tweakableNumber;//what percentage of sideways movement is converted into an opposing force
if( wheel.powered )
car.force += wheel.forward * tweakableNumber2;//engine power
car.acceleration = car.force / car.mass
car.velocity += car.acceleration * deltaTime
car.position += car.velocity * deltaTime
That said, the friction behaviour of rubber tires is quite complex, and the above model will require a lot of tweaking to get something 'fun'... Just cheating by switching between two 'modes', like Trienco suggested, may be a lot easier to achieve a result with
More complex car games simply use
magic.