I've been giving estimates for a decade, and still feel like I'm winging it every time. Planning poker definitely works, provided you understand the requirements, and by 'understand' i don't mean you have read a spec document, but that you understand the customer's business problem and have figured out how the proposed solution aims to solve it. Sadly most large projects don't have the time in their pre-sales estimation phase for the team that produces the estimate to build an understanding of the whole problem domain. Paradoxically this low confidence in the estimate will tempt the sales team to cut it even further, since they interpret uncertainty as a liberty to seek the low bound (or even lower).
As others have pointed out in those large projects it's better not to make up-front estimates and just build as much value as possible for a fixed cost, using agile principles. However, that's typically not how large software projects are sold (or bought). Fixed price almost always means fixed scope. I'd like to know of any large software project sold to a customer in truly agile fashion (no fixed scope determined in advance). To me it sounds like a software development unicorn: you hear about it, but you're never the one building it.