The good news is that we don’t have to live with this system. There’s nothing in the Constitution that says there have to be only two parties. There’s nothing in the Constitution about parties at all. There’s not even anything in the Constitution mandating that each congressional district have only one member and be represented by one party. We could have a much fairer and better system with the passage of a law.
The way to do that is through multimember districts and ranked-choice voting. In populous states, the congressional districts would be bigger, with around three to five members per district. Voters would rank the candidates on the ballot. If no candidate had a majority of first-place votes, then the candidate with the fewest first-place votes would be eliminated. Voters who preferred that candidate would have their second-choice vote counted instead. The process would be repeated until you get your winners.
This system makes it much easier for third and fourth parties to form, because voting for a third party no longer means voting for one with no chance of winning. You get a much more supple representation of the different political tendencies that actually exist in the country.
The process also means that people with minority views in their region have a greater chance to be represented in Congress. A district in Southern California, for example, might elect a Bernie Sanders-type progressive, a centrist business Democrat and a conservative.