**TransitiveReductionGraph** (version 10+)

  Using the examples from @Kuba's answer:

    dag1 = {DirectedEdge[a, b], DirectedEdge[b, c], DirectedEdge[a, c]};
    dag2 = DirectedEdge @@@ {{a, b}, {b, c}, {a, c}, {e, b}, {e, c}};
    dag3 = DirectedEdge @@@ {{a, b}, {b, c}, {a, c}, {e, b}, {e, c}, {e,  f}, {f, c}};
    dag4 = DirectedEdge @@@ {{2, 1}, {3, 1}, {3, 2}, {4, 1}, {4, 2}, {4, 3},
      {5, 1}, {5, 2}, {5, 3}, {5, 4}};
    options = {VertexLabels -> Placed["Name", Center], VertexSize -> Large, ImageSize -> Small}
        
    Grid[Prepend[Through[{Graph[#, options]&, TransitiveReductionGraph[#, options]&}@#] & /@ 
      {dag1, dag2, dag3, dag4},
     {Style["g", 16, Bold], Style["TransitiveReductionGraph[g]", 16, Bold] }],
     Dividers -> All, ItemSize -> {{Scaled[.3], Scaled[.3]}, {Scaled[.1], 5, 5, 5, 5}}]
[![enter image description here][1]][1]

**Note:** Although it works as expected in the cases considered here, as noted by Szabolcs, `TransitiveReductionGraph` [had unresolved issues before version 12.1](https://mathematica.stackexchange.com/questions/83852/question-about-transitivereductiongraph).

  [1]: https://i.sstatic.net/6qxU9.png