In this paper, we consider the optimal resource allocation problem for multiple-input multiple-output non-orthogonal multiple access (MIMO-NOMA) systems, which consists of beam-forming, user clustering and power allocation, respectively. Users can be divided into different clusters, and the users in the same cluster are served by the same beam vector. Inter-cluster orthogonality can be guaranteed based on multi-user detection (MUD). In this paper, we propose a three-step framework to solve the multi-dimensional resource allocation problem. In step 1, we propose a beam-forming algorithm for a given user cluster. Specifically, fractional transmitting power control (FTPC) is applied for intra-cluster power allocation. The considered beam-forming problem can be transformed into a non-constrained one and the limited-memory Broyden–Fletcher–Goldfarb–Shanno (L-BFGS) method is applied to obtain the optimal solution. In step 2, optimal user clustering is further considered. Channel differences and correlations are both involved in the design of user clustering. By assigning different weights to the two factors, we can produce multiple candidate clustering schemes. Based on the proposed beam-forming algorithm, beam-forming can be done for each candidate clustering scheme to compare their performances. Moreover, based on the optimal user clustering and beam-forming schemes, in step 3, power allocation can be further optimized. Specifically, it can be formalized as a difference of convex (DC) programming problem, which is solved by successive convex approximation (SCA) with strong robustness. Simulations results show that the proposed scheme can effectively improve spectral efficiency (SE) and edge users’ data rates.