I have no problem with Euler angles at all. I keep track of yaw, pitch and roll via simple euler variables and handle rotations in one of 2 ways.
Either incrementing an orientation matrix each time one of the rotations changes (matrix.arbitraryRotation(yaw-oldYaw) for example), or construct a new quaternion from scratch using my 3 euler angles each frame. For 6dof objects, that have constantly changing pitch, yaw, and roll - I've found the quaternion from scratch method to be the best and fastest.
For my car rotations, my euler angles for pitch and roll are simply the angles calculated from road raycasts of the front and back wheels, and left and right wheels respectively.
To be honest I'm not really sure how you could get away with not using euler angles at all. Maybe for something like a plane game for example, where the player just manually increments all axis rotations, and you don't need to calculate euler angles between points?
In all the games I've developed euler angles have seemed essential.