The question is which language you want to use to express it. It can be expressed in the language of Peano arithmetic, and hence in other theories that interpret Peano arithmetic, such as ZFC.
The key is to use techniques like the ones for Kleene's $T$ predicate to formalize computability in arithmetic. Using these coding techniques, it is straightforward but long to write formulas of arithmetic that define each of the predicates:
$\Phi(e,s,i,j)$ which says that that Turing machine with index $e$ halts in $s$ steps on input $i$ without output $j$
$\Psi(e,s,i,j)$ which says that the nondeterministic Turing machine with index $e$ has at least one halting computation with $s$ steps on input $i$ without output $j$
$\Theta(a, s, i)$ which says that if $a$ is read as a code for a polynomial $p(x)$ over $\mathbb{N}$ then $s < p(i)$. For example, we might factor $a$ into prime powers, $a = 2^{a_0}3^{a_1}\cdots r^{a_n}$, and let $p(x) = a_0 + a_1 x + a_2x^2 + \cdots + a_nx^n$.
To express $P = NP$, you can use these formulas to directly express the statement "If $e$ is a nondeterministic Turing machine that runs with some polynomial time bound, then there is a deterministic Turing machine e' that runs in polynomial time and computes the same values as $e$."
It is also possible, using the same methods, to write a formula $\Sigma(a)$ which says that if $a$ is viewed as a code for a propositional formula then this formula is satisfiable (remember that an interpretation of a propositional formula is just a finite list of truth values for its variables). Then you can use $\Sigma$ to express "There is a Turing machine which solves the satisfiability problem in polynomial time".