I've spent about 20 years refining my programming stereotypes. I think they fit the data pretty well now. Here's my take on you, simply because you're an EE:
* You're smart enough to pick up pretty much any CS concept, from the simple to the arcane. For the most part, only physics majors will simply be smarter than you.
* Your code will look like crap, until you put effort into writing more idiomatically and until you learn the design patterns that help programmers use to tame complexity. Your code will, generally speaking, be harder to read than that produced by CS and physics majors, until you put some work into it.
* You mentioned having only a fragmented understanding of CS theory. I think that's true for most of us (I have a PhD in CS). There's just so much of programming for which good theory has been developed: type systems, parallelism (concurrent sequential processes, deadlock rules), user interfaces (kind of), system complexity, static / dynamic analysis of code, relational algebras, parsing, the expressive power of various languages in the Chomsky hierarchy, graph theory, complexity classes, etc. A lot of these theories can be useful for solving problems, but most programmers muddle by without putting them all together and remembering their implications. Heck, most programmers probably don't know about half of the things I listed.
So I wouldn't feel too anxious about that, especially w.r.t. web programming. But it can be very satisfying to to learn more about them, and may in some cases let you solve some problems that other's can't. If you want to get better at some of the brainier stuff, I'd suggest getting a master's degree in CS from a decent school. But that my be overkill for bog-standard web development, I'm not sure.