you might never be able to grab no 1 spot, I wouldn't stress over this if your current rankings bring in good traffic and money. Sometimes, for some keywords, no 1 spot is reserved to only big (multi billion) corporations, so it's much better to be happy with no 2 and try to rank other keywords on page 1 than to fight for something unattainable... or that consumes a lot of resources at least... But that's just my opinion, you can disagree, of course...
And if you really want to steal your competitor's no 1 spot it's usually a matter of authority (they probably have better authority than you), which means that you need more and better backlinks.
If the authority of both of you is similar it might come down to who has bigger site (more indexed pages, more pages with traffic, more ranked keywords, more traffic, etc), or - most of the time - improving and optimizing the content.....
But all of these assume that you're not against an immovable object (because you're not the unstoppable force yet) like a big corporation, like I said, but also that your site is very good from a topical authority and on-site SEO perspective. If you're lacking in these aspects (speed and cleanliness, site structure, etc) and your competitor is not very strong then that's how they're beating you most likely...
Point being: you need to compare yourself against the no 1 spot and see where you lack behind (and improve), or - if you feel / know for sure that your site is better in every respect - backlink the crap out of it
