Clustering algorithms have been widely used by biologists to identify clusters of co-related genes. Traditional approaches consider the gene clustering as an optimization problem, where an ad-hoc cluster quality index is optimized which can be defined in terms of gene expression data or biological information. However, these approaches may not be sufficient since they cannot guarantee to generate clusters with similar expression patterns and biological coherence. In this paper we propose a bi-objective gene clustering model to produce clusters of genes with high levels of co-expression and biological coherence. Our approach uses NSGA-II algorithm which receives as input a combined distance matrix and optimizes two index based on gene expression level and biological functional classes. The model is applied for clustering of real-life gene expression datasets to verify its performance. Results show that the proposed approach produce gene clusters with higher levels of co-expression and biological coherence than traditional approaches.