dense might be from not letting the bread proof enough. Heres my italian (or french depending on the shape) bread recipe. The key to good bread is to use a starter, not just yeast. Once you make the starter, just keep some in your fridge and feed it with equal parts water and flour 2 times a week. it will last literally forever.
starter:
2.5 c potato water (boil a few potatoes and use this water)
1 pkg yeast
1 tsp. sugar
1 3/4 c flour
let sit covered for 8-12 hours untill foamy
bread:
2 c flour
1 1/2 - 2 c starter (enough for a wet but not too wet consistancy, it should be somewhat sticky)
3/4 tsp salt
1. mix, knead, shape into ball, lightly coat with olive oil
2. let rise in bowl 3x bigger then ball covered with towel untill doubled (1-2 hrs) You want a warm spot like the oven turned off but with the light on
3. turn out, gently knead out large bubbles
4. shape into tight ball, place on cornmeal covered baking pan, let rise untill doubled (1hour or so)
5. score top, place in 400F preheated oven with empty cast iron pan in bottom of oven
6. pour 2 c boiling water into pan, quickly close oven
7. bake for 1 hour, or untill when bottom is thumped it sounds hollow.
the pan in the oven creates steam, which will give the bread a nice thick crust. (real bakeries have steam injected ovens for this)
another good idea is to get and use a baking stone, this makes for even baking.
once you do it a few times, its soo easy. the PITA part is geting the starter going.
Now for REALLY good bread you must use a sourdough starter, for this instead of yeast, you let the starter sit out in the open air untill its foamy. Its like a lambic, wild yeast and bacteria do all the work, and leave a nice tart flavor you will never get with bread yeast. Its how all bread used to be made, and still is made in good bread towns like France, Italy and san Francisco