Hi, piggynose -
It's almost certainly going to be down to the flour you're using. You need strong flour to achieve the gluten content required for good, dense bread. The other thing you could try, which a little more labour intensive but SO worth it, is to make your bread with a starter dough. It gives a more dense crumb to a basic loaf, and a much improved flavour too.
If you're baking using, say, 500g of flour; take 1/3 of it and mix it half of your yeast and enough warm water to make a dough. Knead it as you would any other dough and leave it to prove for a few hours. Knock it back, let it prove a second time, and then use this as a starter for your actual loaf - just mix all of your normal ingredients together and incorporate the starter dough too, kneading it through.
If you bake regularly you can make your batch slightly bigger, and reserve some of the dough to act as your starter next time. It really does make a big difference to the finished bread.
Good luck!