Summary
My recommendation is to compute a restorative torque to apply to the object. This is physically more accurate than setting the velocity directly, and the simulation will be better behaved.
This solution should also work for any launch angle. Below is a gif of this method at work stabilizing arrows launched from a car.

Restorative Torque
This video on the concept of control system stability describes exactly what you are trying to achieve. The video (and the series) is very well made, but the example of the dart at 2:35 is particularly informative.
In the example Brian describes, the dart (or projectile in your case), tends to orient itself with the velocity vector because of the air pressure on the flights of the dart.
Implementation
When the projectile is created, there should be some angularDamping
set for the body to damp out rotational forces. Then the restorative torque may be applied as follows:
//Get the velocity of the projectile
b2Vec2 projVel = projBody.GetLinearVelocity();
//Get the current angle of the body in the range 0,2*pi
double ang = projBody.GetAngle() % pi;
if(ang < 0){
ang = ang + 2*pi;
}
//Compute the difference between the projectile angle and the angle of the velocity vector
double diff = atan2(-projVel.x, projVel.y) - ang;
//Need the absolute angle for a couple of tests
double absDiff = abs(diff);
//Test if the difference exceeds some very small threshold value (e.g. 10e-6)
if(absDiff > thresh){
/*Test if the difference in angles is greater than pi
(If so then the projectile has completely flipped around
and the restoring torque needs to be applied in the opposite direction)*/
if(absDiff > pi){
diff = diff-2*pi;
}
/*Apply the restorative torque, scaled with the velocity so that
the faster the object is moving, the greater its tendency
to align with the direction of motion.
The torqueCoeff is a tunable coefficient:
- increase it if your body isn't aligning quickly enough
- decrease if it's wobbling back and forth too much.
You can also play with the angularDamping coefficient to produce the results you want*/
projBody.ApplyTorque(diff*projVel.Length()*torqueCoeff);
}
Please be advised, this code is untested. I have translated it from some lua code I have written for a love2d project (the co-ordinate system in love2d is flipped about the horizontal axis so some of the angles are computed differently).