There are very few occasions when you should really use without sharing. Below is what the documentation states:
Use the without sharing keywords when declaring a class to ensure that
the sharing rules for the current user are not enforced. For example,
you may want to explicitly turn off sharing rule enforcement when a
class acquires sharing rules when it is called from another class that
is declared using with sharing.
Its one of the best practice to use with sharing. What you mentioned tells me that you are accessing a record which you may really not have access to.
Please double check your org's sharing settings and profile configuration to ensure that this will not allow you any access to records which you shouldnt see. Depending on the number of users/ different kinds of users using the system this has the potential to result in breach of information.
I would in this case ideally find out the root cause on why i am not able to see this record.What you have done according to me is a work around :)
All classes should have the with sharing keyword when we create it.