We consider resource allocation for semi-elastic applications such as video conferencing. We propose to model user utility as a sigmoid function of the average bit rate over multiple time slots. The goal is to maximize the total expected user utility over time through allocation of downlink power and subcarriers in each time slot. We propose resource allocation that considers both the average rate achieved so far and the future expected rate, and show how the future expected rate can be estimated by modeling the probability that a user will be allocated a subcarrier in a future time slot. The algorithm can be implemented in a distributed fashion by an exchange of price and demand amongst users, the network, and an intermediate power allocation module. To reduce the complexity, we also propose a greedy algorithm to maximize incremental utility in the current time slot. The performance is illustrated using numerical results.