In most cases, redirect('controller/method') should still work in this manner without setting the base_url, though you should set the base_url anyway. If it doesn't work, it would imply that site_url('controller/method') is not working, either.
All of this implies that some combination of settings (base_url, enable_query_strings, url_suffix, and index_page seem to be the most likely candidates) causes site_url() to fail. Where does redirect('controller/method') attempt to send you when base_url is empty?