This paper deals with the generation of balanced incomplete block designs (BIBD), a hard constrained combinatorial problem with multiple applications. This problem is here formulated as a combinatorial optimization problem (COP) whose solutions are binary matrices. Two different neighborhood structures are defined, based on bit-flipping and position-swapping. These are used within three metaheuristics, i.e., hill climbing, tabu search, and genetic algorithms. An extensive empirical evaluation is done using 86 different instances of the problem. The results indicate the superiority of the swap-based neighborhood, and the impressive performance of tabu search. This latter approach is capable of outperforming two techniques that had reported the best results in the literature (namely, a neural network with simulated annealing and a constraint local search algorithm).