practice, and learning them in context. Don't just try to memorize that such and such kanji has this, that and the other reading. That's the brute-force method of learning and while you might remember stuff you aren't making the connections necessary to apply that knowledge when you encounter a new word or unexpected situation.
For example, remembering that 行 can be こう or ぎょう isn't very helpful when you encounter a new word, because how are you supposed to know which reading to use? But try remembering that when used with a number like 三行 it means "#th line" and when it's used in a compound with a noun meaning like 行列、行事、行儀、行政 it's it's read ぎょう, but when used with kanji describing action or movement like 行進、行動、行為, it's read こう. This isn't a foolproof method (行員, bank teller, is a noun, but it's pronounced ぎょういん), but it gives you more of a foundation to stand on.
Also study the radicals because they have an effect on which onyomi a kanji may have, which can give you a better idea of how a new kanji is pronounced when you first encounter it. Japanese is highly contextual, and it's only through seeing these characters in context will you begin to internalize how they're used and pronounced in a given situation. Hope that helps