That CSS looks fine to me. Are you viewing this in an old version of IE by any chance? They had issues with the box model (your padding might be throwing off the width calculation).
Bear in mind that your browser will make its own mind up what to do with a word that can't be broken - a string of characters in a row can't be wrapped, so may well display beyond the edge of the container, as demonstrated in your screenshot. If you REALLY want to hide such text, use the CSS property
overflow like this:
overflow: hidden;
Incidentally, hyphenation in CSS 2 appears to be possible to a limited extent (browser-dependent):
http://trentwalton.com/2011/09/07/css-hyphenation/ Hopefully widespread use of CSS3 will improve the situation.
Oh, and point of order, when posting code here, it's helpful to wrap it in [code
] [/code
] blocks.