In a sentence, gerrymandering is the process of redrawing district lines in order to advantage one political party over another. It happens. Both sides draw oddly shaped districts to win more seats. But it is a lot less powerful of a tool compared to the amount that people complain about it. True, the Republican Part probably would have won approximately 8 less seats in the House of representatives if it was not for redistricting. But it also true that would not be enough to switch control of the House. Since party discipline is so powerful in the House, it does not matter if the Republicans control it by 2 or 60 seats. The end effect is the same.
This is biggest reason that gerrymandering does not matter as much as you think: state lines are set in stone. The Founding Fathers reached a compromise on the Constitution to form a federalist government where each state sends ambassadors (Congressmen) to make national policy based off the collective interests of the state. It is only in modern times (Post-WWII) where people tend to think of state governments of secondary importance to the Federal government. Because of this age-old compromise, the rural/urban, geographic, and demographic compositions of the states (along with where the borders start and end) give whatever party that represents rural areas a natural advantage. Currently, it is the Republican Party but it used be the Democratic Party.
If you want to get rid of this natural advantage, then you are going to have to change the geography of the map. Someone went out of their way to do just that. Here is what the US would look like of 50 states with equal population:
The real problem of a two-party system is that it is built on the foundation of compromise in order to ensure stability; while at the same time, it is the job of the opposition party to oppose. Politicians have a hard time knowing when it is time to oppose and when it is time compromise, especially when they have political bases that believe that "compromise" is a four-letter word.