Operations research practitioners frequently want to model complicated functions that are difficult to encode in their underlying optimization framework. A common approach in the literature is to solve an approximate model, and to use a simulation to evaluate the true objective value of one or more solutions. We propose a new approach-Branch-and-Simulate-for integrating simulation into the optimization model itself. Branch-and-Simulate is a variant of logic-based Benders decomposition where we run a simulation at each incumbent solution to the master problem. The simulation data is then used to guide the trajectory of the optimization model, via Benders cuts. We test the approach on a class of stochastic resource allocation problems with monotonic performance measures. We derive strong Benders cuts which are valid for all problems of this form. We consider two concrete examples: an airport check-in counter allocation problem, and a nursing home shift scheduling problem. Whereas previously these problems could only be solved approximately, we solve challenging instances to optimality within a reasonable amount of time. In the appendix, we will also use Branch-and-Simulate to approximately solve an ambulance location problem.