Thanks esmi, I knew query_posts wasn’t the ideal method. It was just a quick fix to make the client happy. Before posting this question, I took a look at get_posts and if I remember correctly it doesn’t let you pull posts by tag.
Reading through the docs for WP_Query it looks like that’s the way to go.
Thanks again.
Ok, I’ve got it working thanks to an old post and some code by alchymyth. Now I’m trying to list posts within the subcategories.