If you need to host several domains, I use Dreamhost:
They dont just slice up servers and run the entire LAMP stack on them, they use clusters for their file storage and their MySQL servers.
For $9-11/mo (depending on how much you prepay) you can host as many domains as you want under a SINGLE account
They have their own control panel that works very well, I like it better than cPanel or Plesk.
They constantly update their features and give you plenty of bang for your buck with friendly support.
You can upgrade to Dreamhost PS which lets you scale your processor and memory dynamically whenever you want.
As for Application hosting, I am currently switching to Linode, my old VPS was slow, had bad support, very limited features. Linode is like a breath of fresh air, it's very affordable, scalable, and the management tools they offer are simple to use but very robust. I am very angry that I didn't choose them years ago.
Both these companies seem to live and breath Linux and Internet, They both give you the feeling that their staff truly enjoys running and maintaining their respective networks. Before choosing Linode, be sure you know what you are doing and plan to maintain and upgrade the server yourself, otherwise use Dreamhost.