The state-of-the-art algorithm for maintaining an approximate maximum matching in fully dynamic graphs has a polynomial worst-case update time, even for poor approximation guarantees. Bhattacharya, Henzinger and Nanongkai showed how to maintain a constant approximation to the minimum vertex cover, and thus also a constant-factor estimate of the maximum matching size, with polylogarithmic worst-case update time. Later (in SODA'17 Proc.) they improved the approximation to 2 + . Nevertheless, the fundamental problem of maintaining an approximate matching with sub-polynomial worst-case time bounds remained open. We present a randomized algorithm for maintaining an almost-maximal matching in fully dynamic graphs with polylogarithmic worst-case update time. Such a matching provides (2 + )- approximations for both maximum matching and minimum vertex cover, for any > 0. The worst-case update time of our algorithm, O(poly(log n,−1)), holds deterministically, while the almost-maximality guarantee holds with high probability. Our result was done independently of the (2 + )-approximation result of Bhattacharya et al., thus settling the aforementioned problem on dynamic matchings and providing essentially the best possible approximation guarantee for dynamic vertex cover (assuming the unique games conjecture). To prove this result, we exploit a connection between the standard oblivious adversarial model, which can be viewed as inherently “online”, and an “o ine” model where some (limited) information on the future can be revealed e ciently upon demand. Our randomized algorithm is derived from a deterministic algorithm in this o ine model. This approach gives an elegant way to analyze randomized dynamic algorithms, and is of independent interest.