Abstract: Social punishment is a mechanism by which cooperative individuals spend part of their resources to penalize defectors. In this paper, we study the evolution of cooperation in 2-person evolutionary games on networks when a mechanism for social punishment is introduced. Specifically, we introduce a new kind of role, punisher, which is aimed at reducing the earnings of defectors by applying to them a social fee. Results from numerical simulations show that different equilibria allowing the three strategies to coexist are possible as well as that social punishment further enhance the robustness of cooperation. Our results are confirmed for different network topologies and two evolutionary games. In addition, we analyze the microscopic mechanisms that give rise to the observed macroscopic behaviors in both homogeneous and heterogeneous networks. Our conclusions might provide additional insights for understanding the roots of cooperation in social systems.