A method, for a wireless network node, of dynamically allocating spatial and time-frequency resources among a plurality of data flows corresponding to a plurality of mobile terminals and a plurality of data services, each data service having a minimum satisfaction constraint that specifies a minimum number of flows of the data service that must be satisfied by the allocation of resources, the method comprising: performing an initial allocation of available spatial and time-frequency resources to the data flows, based on channel state information for the mobile terminals, so as to define from the data flows, for each of a plurality of available time-frequency resource blocks, a spatial-multiplexing group for the time-frequency resource block, while ensuring that at least one of the data flows is satisfied by the allocation of resources; from the data flows in the initial allocation, identifying a receiver flow set, a donor flow set, and an available resource set, the receiver flow set comprising data flows that have not been allocated sufficient resources to be satisfied, the donor flow set comprising data flows that have been allocated sufficient resources to be satisfied, and the available resource set comprising all resources assigned to the data flows in the donor flow set in the initial allocation; selecting a data flow having a worst channel condition from the receiver flow set; reallocating a time-frequency resource block selected from the available resource set to a spatial-multiplexing group that includes the selected data flow, based on a reallocation metric that accounts for (a) a reduction in the distance between flow data rates achievable by the most current allocation of resources and data rate requirements for data flows in the receiver flow set, and (b) a loss in total throughput caused by the reallocation of the identified time-frequency resource block, compared to the total throughput of the current allocation; updating data rates of data flows in the receiver and donor flow sets and removing the selected data flow or other data flow from the receiver flow set if the selected data flow or the other data flow is satisfied after the reallocation; removing the reallocated time-frequency resource block from the available resource set; and repeating said selecting, reallocating, updating, and removing operations until there are no data flows in the receiver flow set or until no time-frequency resource blocks can be reallocated without causing a data flow in the donor flow set to become unsatisfied. performing an initial allocation of available spatial and time-frequency resources to the data flows, based on channel state information for the mobile terminals, so as to define from the data flows, for each of a plurality of available time-frequency resource blocks, a spatial-multiplexing group for the time-frequency resource block, while ensuring that at least one of the data flows is satisfied by the allocation of resources; from the data flows in the initial allocation, identifying a receiver flow set, a donor flow set, and an available resource set, the receiver flow set comprising data flows that have not been allocated sufficient resources to be satisfied, the donor flow set comprising data flows that have been allocated sufficient resources to be satisfied, and the available resource set comprising all resources assigned to the data flows in the donor flow set in the initial allocation; selecting a data flow having a worst channel condition from the receiver flow set; reallocating a time-frequency resource block selected from the available resource set to a spatial-multiplexing group that includes the selected data flow, based on a reallocation metric that accounts for (a) a reduction in the distance between flow data rates achievable by the most current allocation of resources and data rate requirements for data flows in the receiver flow set, and (b) a loss in total throughput caused by the reallocation of the identified time-frequency resource block, compared to the total throughput of the current allocation; updating data rates of data flows in the receiver and donor flow sets and removing the selected data flow or other data flow from the receiver flow set if the selected data flow or the other data flow is satisfied after the reallocation; removing the reallocated time-frequency resource block from the available resource set; and repeating said selecting, reallocating, updating, and removing operations until there are no data flows in the receiver flow set or until no time-frequency resource blocks can be reallocated without causing a data flow in the donor flow set to become unsatisfied.