I use boolean.. D:

so it doesn't shit up all the faces, select and detach the face/s that you want to boolean as a separate object.. do boolean, clean it up, then attach it again.