I do no think there is an easy solution so I replaced default frame with AxisObject-s.
(Maybe there is some repository function that can do that but I haven't searched for one.)
Height h of the label should be adjusted manually.
pl = RegionPlot[y^3 < x^2 + x, {x, -2, 2}, {y, -2, 2}, Frame -> False];
pad = OptionValue[AbsoluteOptions[pl], PlotRangePadding];
pr = OptionValue[AbsoluteOptions[pl], PlotRange];
ax = pr + pad {{-1, 1}, {-1, 1}};
label = Style[y^3 < x^2 + x, 16, Blue];
h = 0.4;
bcolor = Lighter[Yellow];
as = DefaultBaseStyle -> {Antialiasing -> False};
pl /. Graphics[g1_, g2___] :>
Graphics[
Append[g1, {AxisObject[{"Horizontal", ax[[2, 1]], ax[[1]]}, as],
AxisObject[{"Horizontal", ax[[2, 2]], ax[[1]]},
TickDirection -> "Inward", TickLabels -> None, as],
AxisObject[{"Vertical", ax[[1, 1]], ax[[2]]}, as],
AxisObject[{"Vertical", ax[[1, 2]], ax[[2]]},
TickDirection -> "Inward", TickLabels -> None,
as], {FaceForm[bcolor], EdgeForm[Directive[Black, Thin]],
Rectangle[{ax[[1, 1]], ax[[2, 2]]}, {ax[[1, 2]],
ax[[2, 2]] + h}]},
Inset[label, {Mean@ax[[1]], ax[[2, 2]] + h/2}]}],
g2] /. (PlotRangePadding -> _) -> (PlotRangePadding ->
pad + {{0, 0}, {0, h}} + 0.1)
