We present in this paper a novel QoS prediction approach to tackle service recommendation, which is to recommend services with the best QoS to users. QoS prediction exploits available QoS information to estimate users' QoS experience from previously unknown services. In this regard, it can be modeled as a general matrix completion problem, which is to recover a large QoS matrix from a small subset of QoS entires. The infinite number of ways to complete an arbitrary QoS matrix makes the problem extremely ill posed. The highly sparse QoS data further complicates the challenges. Nonetheless, real-world QoS data exhibits two key features, which can be leveraged for accurate QoS predictions, leading to high-quality service recommendations. First, QoS delivery can be significantly affected by a small number dominant factors in the service environment (e.g., communication link and user-service distance). Hence, it is natural to assume that the QoS matrix has a low-rank or approximately lowrank structure. Second, users (or services) that share common environmental factors are expected to receive (or deliver) similar QoS and hence can be grouped together.The proposed approach seamlessly amalgamates these two features into a unified objective function and employs an effective iterative algorithm to approach the optimal completion of an arbitrary QoS matrix. We conduct a set of experiments on real-world QoS data to demonstrate the effectiveness of the proposed algorithm.