Manipulating an equation to isolate a term (not solve for a variable)

Consider the following minimal example of my problem:

``eq = (a^2 + a == b^2) ``

I would like to manipulate this equation to achieve:

``a == b^2 - a^2 ``

First, note the obvious point that solving for `a` in this context is not appropriate as

``Solve[eq, a] ``

solves the quadratic equation, which is not my goal.

Alternatively, there are rather straightforward ways by which one can rearrange this equation by hand, for example:

``AddSides[eq, -a^2] ``

But that requires "human insight" and is awkward indeed for my full problem (where there are many terms on both sides of the equation).

For obvious and analogous reasons, `Gather` does not solve this problem either.

One can go in by hand and identify the desired term and manipulate the equation, basically by hand but that is of little help.

My presenting case is an enormous reduced equation in many variables that contains (say) a single `a` amidst many terms on the left. I’m seeking the simplest way to compute an equation of the form `a == .........` which may (indeed does) contain nonlinear terms involving `a` on the right. I’m seeking the re-arranged equation so I can perform additional manipulations (with other equations and such).

Suggestions?