HM03 Surf is located in Petalburg City and can be acquired from Wally's father after the player beats Norman, the Petalburg City gym leader. The gym leader also happens to be the father of the player's character.
Norman will use a level 28 Slaking, a level 30 Vigoroth and another Slaking at level 31 for the battle. The level 31 Slaking will be a little difficult to beat, and Norman will use a Hyper Potion at some point in the battle. It is a good idea to use Fighting and Ghost types or Rock and Steel type Pokemon combinations for the battle. Once the player has beaten Norman, he should then proceed to Wally's house next to the gym and speak to his dad to obtain HM03 Surf.