It depends partially do to the keywords you are trying to rank for. If you know how to do competition analysis and find that the keywords have decent search volume while there aren't a huge number of pages focused on those keywords that are indexed in Google -- then that's a bit of an advantage.
1. Proper keyword optimization
2. Really well-written content that is full of information (Google takes cues from PDF documents, image alt tags, videos and text-based content).
3. LSI (Latent Symantic Indexing) is using similar keyword phrases that belong with your main keyword phrase in that content. It's a cue that your content is rich with information.
4. Above all -- make sure that your content is going to be killer for your audience. Writing content naturally would mean that you would naturally incorporate all means to deliver information and use various methods to explain things...hence the first 3 items in this list should come naturally.
5. A good site structure is important and that is easily crawlable for bots
6. All titles of all articles should be within an H1 tag....not the title of the site itself -- I see this mistake a lot.
7. A sitemap...
8. Relevant backlinks, but I personally focus on building up my communities around my site such as Facebook, Twitter, Google+, Pinterest, etc.
9. You can get relevant, high-quality links from guest posting or just networking with bloggers in your community. A lot of good link building is relationship building.
If you use WordPress is makes doing many of these things very easy. There's a lot more to it than just this, but this is a good start.
When people ask me about onsite optimization...I tell them to look at the source code of Wikipedia or an article there in general.
Hope this helps