Can I link contacts to one another (i.e. referral, colleagues, etc.)?

Can I link contacts to one another (i.e. referral, colleagues, etc.)?

I want to have the ability to create relationships between contacts.  If I have a particular contact that is a decision maker and sits in another state and they have me go to their local office for work, I want to be able to show there are two contacts that are linked for the one account.  This would also be used in a scenario if one lead refers another to us, I want to show that relationship as well.

Any ideas on how to do this?