'Have' in English has many meanings. When you want a more passive sounding 'have', then 「ある」 is best. When you can change 'have' to 'there is...', then use this. 「ある」 can also mean possession, but this is a more passive way of saying it. 「持っている」 is used more for the meaning of 'I have it with me' or 'right here in my hand'. It draws attention to you HAVING it, where 「ある」 places stress on the item existing in a place (that of course may be at your house or in your bag). There is a lot of gray area between the two where both are fine.
If you can reword the English to accept "There is/are..." instead of "...has...," that means use 「ある」.
One example would be:
The station has a cafe. -> There is a cafe in the station.
So the Japanese would be 「駅にカフェがある。」
You can say:
I have a pen on my desk. -> There is a pen on my desk.
(granted your intended meaning is the same). So the Japanese would be 「テーブルの上にペンがある。」
But saying this in English is strange:
I have a pen. -> ?There is a pen (in my hand?).
So here, you would use 「もっている」. If you used 「ある」, it would sound overly indirect.
(As pointed out in comments) This is only a general rule. Whenever you don't want to stress 'possessing an object,' use 「ある」.
「ペンを持っている。」 I have a pen (stressing possession)
「ペンがある。」 I have a pen (not stressing anything, so it is more like 'the pen exists')
In a question:
「ペンある？」 Do you have a pen? (translation depends on context)(natural way to ask)
「ペンを持っている?」 Do you have a pen?
As this last one stresses possession, it may be asking if you have a pen with you, but not necessarily. eg 「３DS持っている。」 which is 'I own a 3DS.' or 'I have a 3DS right now, in my possession.'
「持つ」also has other meanings/uses (「持っていく」 to bring, for example), but that is outside of your question.