Instructions
Acquire a better rod than the Old Rod from the fishing guru. The Good Rod is obtained by talking to the fishing guru in Olivine City. He is located in the house just above the Pokemon Center. The Super Rod is obtained by talking to the fishing guru located in the lone house on Route 12.
Travel to any body of water. Bodies of water are found throughout the game, but particularly on Routes between cities.
Select either the Good Rod or the Super Rod from the item menu while facing a body of water to begin fishing.
Wait for an exclamation mark to appear on the screen and press the A-button to catch the hooked Pokemon and engage in a Pokemon battle. The Good Rod and Super Rod still have a chance to catch a Magikarp, however, they catch Magikarp with a much lower frequency than the Old Rod.