Solution: Toll roads.
Ideally it should be dynamic congestion pricing so that the cost of driving on a particular road at any time is based on how busy the road is. Right now major roads are a classic "tragedy of the commons" situation.
Congestion pricing is like trying to put out an oil fire by pouring water on it. And then charging the poor 15% of their paycheck for the water.
The primary reason there is congestion is that where people live and where people work are too far apart, i.e. there isn't enough housing near the jobs. Solve that and there is no congestion. Don't solve it and every other solution will be a new problem.
You can't get people to take a bus to a place the bus doesn't go, and you can't build mass transit from everywhere to everywhere across a thousand square miles of sprawl.
You can build multi-story housing near multi-story offices, and build both next to subway stations.