For me what works the best:
Start early in the morning, before the sun and everyone else rises, this will give ~2 hours of time in a single block, the rest of the day is there just for interruptions and small tasks.
I work out every morning Mon-Fri then I'm at my desk a good 45-60min before everyone else arrives.
I'm more productive during my "silent endorphin" rushes than any other time of day.
As soon as I hear the first person arrive, I toss my noise-cancelling headphones on, crank some white noise, set my IM status to "Busy" and then go for as long as I can before someone interrupts me. (usually ~30-60min).