I've been freelancing for ~4 years, "properly" for the last 2. This is what I have found works...

Your very best clients will come from personal recommendations. Avoid close friends recommending you; one of my first clients was recommended by a close friend, and you feel an obligation to both the client and the friend. Not fun - especially when you make a cock up and the friend calls you to say they are a bit let down. At least without the friend in the equation it is only your professional reputation at risk :)

But good clients come from acquaintances. My very best clients (around 5 regulars) come from a single friend I knew at university - they are marketing person with a big network. I didn't know them very well but they recalled I did software engineering, and got in touch a couple of years after we graduated with a client in need of help.

Tip 1: Check your wider network for possible good "contacts" and tap them for work. You don't have to be embarassed, they weren't that good a friend!

Avoid freelancer sites for the most part. You can get good income from them, but lets face it; you're looking for fun and varied work, with great money and time to call your own. Freelancing sites don't do that for you. They have limitations. You tend to find yourself grinding for work, which you then have to offer competitive prices for. People who post work to freelancer sites are often looking for value, not quality. What are you offering?

Especially this is important when starting out. I had a false start way back 4 years ago when I spent a week looking for freelancing work on those sites & failed dismally. So I went back to my day job.

Tip 2: Ignore freelance sites, mostly. At least till you are established

Learn how to sell yourself - and learn new skills! I started out as a "PHP developer". Screw that - now I am a "Full stack software engineer". I learned how to set up a server and optimise it for load. When a client I had previously done a days work for rang up, months later, in a panic because they had a flood of traffic and couldn't cope... I didn't have to turn them away, I knew how to get them up and running.

Use the right language; You. Are. An. Engineer. That is a skilled consultancy job. Don't undersell yourself as a code monkey jobbing for work. (of course, you then have to live up to that promise)

Tip 3: Learn new skills. Market those skills

Other good work comes from recommendations - these are the best because if someone has been told "Tom gets things done", and they call me, then they are already sold.

The way to make sure you get good recommendations:

- Be 100% professional and competent. Make the effort to write properly in emails, and to include an email footer etc. Little things that make you stand out as capable.

- Get things done. If it's broken, don't waste time. Fix it, then email them the result.

- Be pro-active. If I get a client ring up with a possible project I immediately follow up with an email summarising our phone call - adding some ideas if I can. It shows commitment to them as a customer in a way that adds value to the relationship (without costing them...).

- When the customer calls at 9pm with an emergency, don't fob them off. Fix it. They will happily pay your overtime rates (I once charged a customer £100/hr for overtime emergency work when the normal work I was doing for them was at £45/hr. And they gave me an added 50% bonus because they were so grateful)

- Genuinely offer "full stack". I designed a simple site once, sent the HTML and told them to FTP it to their web host.. the reply was "do what? do we need a domain address?". Clients want you to make things work for them; registering domains and FTPing files is menial in terms of your skill level - the client has no concept of this :) (#1 freelancer rookie mistake).

Tip 4: Be accessible, competent, pro-active and GTD!

Don't worry too much about your website or online portfolio. It's actually a distraction. Find work pro-actively - passively obtained work, unless you are marketing yourself beyond just the website, tends not to be as good!

Tip 5: Find work, don't let it find you

Contact design agencies and recruiters in your area. The latter will annoy you with lots of irrelevant calls ("We have an excellent full time role for you in the Aberdeen area" - uh, hundreds of miles away doing data entry you mean...) but I have also picked up some excellent clients through them. If someone is going to a design agency or recruiter then they have money to burn, and are often looking for a premium service.

Tip 6: Recruiters have clients with cash to spend

Go local. I canvassed my area for small businesses etc. that might benefit from a website. I threw together a leaflet & microsite, plus revamped my own CMS code... and spent a week dropping leaflets through letterboxes. It's good business because I can sell them a design & host package which brings me in half a days work plus yearly ongoing revenue (as it stands, I charge £65/year for domain, hosting and support & have 25 customers with several more interested. In hindsight that was too cheap, I could have gone to £100/yr I suspect.)

This might sound like small change, but the work is regular and if I don't have a "big" contract in a week I can usually fill it with this sort of work via a few phone calls. A couple of the customers have followed up with fully featured website (i.e. booking portals etc.) which earned me good money.

It will surprise you how many business are in your local area - and how much money some of them have to spend!

Tip 7: Look for work locally

That might sound like boring work for an engineer; but it's kinda fun, and very varied. It has also helped build up my design skills to the extent I could tentatively justify calling myself "designer" as well. The next idea I am working on is to partner with some local business improvement initiatives to run "internet" workshops and other technical training sessions for businesses. The first class is at the end of November and it is already oversubscribed - my profit should be > £5,000 for a days work (plus a 3-4 days reusable prep).

I also just launched, locally, an intensive "educate your company about the web/internet etc." consultancy. No clients yet, but some interest.

Tip 8: Diversify

Hope that helps (I know I drifted a little off-topic :))