However there are a few topics I consider essential... operating systems, algorithm runtime/performance, data structures, basic software engineering/design patterns, memory management (seriously, everyone should have a course in C or C++) and functional programming (like Haskell).
Even hacking away at a PHP or Node server, there are times when a bit of knowledge of Big-O runtimes can save you from creating a script that never finishes.
If you can afford it, I'd recommend pursuing a formal route. It exposes you to a lot of ideas and ways of thinking that are hard to get in practice. After having programmed for around 4 years now, I often wish I'd studied CS.
In lieu of that, I think Udacity's nanodegrees programs are probably a good way to end up in a paid position relatively soon.
(I'm assuming you're looking to break into web programming. I can't speak for other areas.)
A lot of devs even at a mid or higher level have little curiosity for the theory side of things, and eventually you'll run into problems that require knowledge of it, so being enthusiastic (and a bit self-starting) in that area pays dividends in my experience even if you're not the most experienced dev going for a job.
The only caveat is that both were/are small companies, so no HR apparatus to go through.
Have some idea what you're doing. Talking the talk is great, but you must be able to walk the walk. Apply to everything that sound like you can/want to do it, even if you don't technically meet the requirements. Those are mostly for HR pre-filtering since HR doesn't really know what they're talking about in 99% of cases - they're just looking for keyword hits.
When applying without a CS background how tough are the technical interviews? Do they tend to expect more or are they more lenient and look more at fit and ability to grow?
It's very rare, in my experience, to be asked a pure CS question in the interview. For some positions you may be silently expected to have some degree of familiarity with CS concepts, for other - especially entry-level - positions you don't need CS knowledge at all.
Being able to produce working and good looking code is all most companies want from fresh employees, I think. It's unfortunately still hard to find people with that skill, but if you have it you can learn everything else.
In short: apply everywhere, go to interviews and don't be afraid. You'll be pleasantly surprised (I hope).
So, from my perspective, if he would have known the tools, basic concepts, and had taught himself more, he would have been a hire. Otherwise, he just wasn't self starting, and really wasn't eager to learn, or he would have come with more ability.
He's also a vastly different person than I am, writing code is not a passion of his, while it is of mine. I'd be writing code whether or not it was my job, while he'd rather be doing other things.