Let D be a weighted directed graph cellularly embedded in a surface of genus g, orientable or not, possibly with boundary. We describe algorithms to compute a shortest non-contractible and a shortest surface non-separating cycle in D. This generalizes previous results that only dealt with undirected graphs. Our first algorithm computes such cycles in O(n2 log n) time, where n is the total number of vertices and edges of D, thus matching the complexity of the best known algorithm in the undirected case. It revisits and extends Thomassen’s 3-path condition; the technique applies to other families of cycles as well. We also give an algorithm with subquadratic complexity in the complexity of the input graph, if g is fixed. Specifically, we can solve the problem in O( √ g n3/2 log n) time, using a divide-and-conquer technique that simplifies the graph while preserving the topological properties of its cycles. A variant runs in O(ng log g + n log2 n) for graphs of bounded treewidth....