first you beat nolan,your dad, and you go to the building next of the gym and talk to the man. he will give you surf.
Yes, Marill can learn Surf.
The most easiest way to get a Pokemon that can surf is get a Zizagoon,it can learn surf.
Surf to an island
to get surf in sapphire you have to go and beat your dad.then go next door to the left.that is wallys house witch you will need to get surf,but you will need to talk to the old man i belive it is.
Surf Right of Lilycove
You have to surf there from Sootopolis or Mossdeep.
you have to surf from Lincoln .
You obtain HM03 Surf after defeating Norman the fifth gym leader, and Wally's father will reward you with surf.
surf
Try to surf you may find it
I believe that it's Wally's father who gives you the HM Surf.
Go next door to wally's house and talk to his dad, he will give you surf.