Many fundamental questions in the molecular evolution of proteins—the roles of contingency and determinism in evolutionary processes, the effect of epistatic substitutions in structuring available paths, and the characteristics of trajectories of functional innovation— depend on the distribution of functional proteins in sequence space and knowledge of how evolution proceeded across this space. However, empirical insight into the historical sequence spaces over which proteins evolved has only recently become accessible with the development of model systems in protein evolution and the advent of high-throughput deep mutational scanning approaches. In my thesis work, I combined two recently developed experimental tools: ancestral protein reconstruction – a phylogenetic technique for inferring the sequences of ancient proteins and experimentally charting their evolutionary history – and deep mutational scanning – an experimental strategy for functionally characterizing large libraries of protein variants. By combining ancestral protein reconstruction and deep mutational scanning for the first time, I explored the mechanistic basis for and evolutionary significance of epistasis, contingency, and evolvability in protein functional evolution. This work reveals how chance factors play a dominant role in the outcomes realized in evolution, how interactions between protein residues enhance the ability of evolution to reach protein sequences with novel functional properties, how the windows of mutational accessibility fluctuate over evolutionary time, and the genetic and biophysical features that give rise to these molecular evolutionary phenomena.