My travel agent has always been able to get me the best deals. Whether you are wanting just the cruise, or the cruise, air, and other extras like excursions and such.
Larger agencies, even those online (not to be confused with sites like Expedia and Orbitz which are not travel agencies but "online discounters") can book large quanities of rooms in advance, then as the rates go up, they are still able to offer them to you at the lower rates to save you money. Online discounters are not always the least expensive way to go and often end up being more. Not to mention all of the potential headaches that you could end up with, in these cases these sites don't seem to be all that helpful, whereas an agent will work to get the problem resolved for you.
Personally, I would never risk a vacation with a site like Expedia. Very rarely will you save and if you do, it may not be much. I would rather spend a little more to know what I am getting.
Try booking as far in advance as possible. Waiting a few months before you go will cause the prices to be pretty high. You can try for a last minute discount, but you need to be flexible. You may not have much options as far as line, boat, destination, etc. Also, be sure to check air prices (if you need to fly) before you book anything. A lot of times air ends up wiping out savings if you have to buy it last minute.