Inspired by this article on Wikipedia:
Intuitively, forcing consists of expanding the set theoretical universe $V$ to a larger universe ${\displaystyle V^{*}}$. In this bigger universe, for example, one might have many new real numbers, identified with subsets of the set $\mathbb {N}$ of natural numbers, that were not there in the old universe, and thereby violate the continuum hypothesis.
All of the instances of this I can think of basically involve the principle of adding new natural numbers, as a first step, which thus adds new sets. For instance, if we use a non-principal ultrafilter to expand the universe, we clearly will get a nonstandard model of $\Bbb N$ in there. Thus, we add new sets of naturals because we have also added new naturals.
The question is: is it possible to somehow have a model of ZFC which adds new sets of natural numbers without actually adding new natural numbers?
Put another way: it is clearly possible for a model of ZFC with the true $\Bbb N$ to have less sets of naturals than the ambient theory, such as with $L$. But can the model somehow have more?
This question stems, I think, from conflating multiple different techniques in set theory. Let me quickly summarize what these techniques do (and don't) do:
The first technique, and in my opinion the really central one here, is classical (= poset-based) forcing. This is the direct "streamlining" of Cohen's original approach, and is what the vast majority of set theorists actually use; Kunen's book Set theory: an introduction to independence proofs contains a good treatment, as do these notes by Unger. There's nothing especially subtle here, and the three most important theorems can be stated snappily as follows:
If $M$ is a countable transitive model (ctm) of $\mathsf{ZFC}$ and $\mathbb{P}$ is a poset in $M$, then there is (in $V$, not in $M$) a $\mathbb{P}$-generic-over-$M$ filter $G$. Such a filter determines a forcing extension $M[G]$ of $M$, which can be described explicitly (via names) or more abstractly as "the unique smallest ctm of $\mathsf{ZFC}$ containing $M$ as a submodel and $G$ as an element." Crucially, $M[G]$ is again a ctm and even has the same ordinals as $M$ itself.
There is a hierarchy of finite subtheories $T_0\subset T_1\subset ...$ of $\mathsf{ZFC}$ such that the above bulletpoint holds with $T_i$ in place of $\mathsf{ZFC}$ for each $i$. This tweak lets us prove independence results merely assuming $Con(\mathsf{ZFC})$, not "$\mathsf{ZFC}$ has a ctm" (which is strictly stronger). It's really more of a technical improvement, but still worth noting; Kunen says more about it.
Another way to fix the result of the first bulletpoint is to drop the assumption of transitivity: (1) holds with only the assumption that $M$ is a countable model of $\mathsf{ZFC}$, and by downward Lowenheim-Skolem the existence of such a model is equivalent to $Con(\mathsf{ZFC})$. In my opinion this is a much more natural tweak than (2); the added subtleties are actually substantive (which is both good and bad I suppose) and consist of $(i)$ the need to build $M[G]$ via "internal" recursion and $(ii)$ a less-trivial verification of Foundation in $M[G]$ (with $(i)$ being by far the most important point here). Embarrassingly, I don't really know a good source for this; it's just "folklore" and was presented to me as a good exercise back in grad school. Corazza has a paper on the topic, but I haven't read it so I can't vouch for it.
Before moving on to the other two points, let me just observe that the above - especially (3) - gives a very strong positive answer to your question: any countable model has "no-new-naturals, many-new-reals" expansions. Moreover, something like a countability hypothesis is obviously needed, since otherwise our "starting model" might already have all subsets of (what it thinks is) $\omega$. Note that transitivity/well-foundedness issues don't play a role here at all.
Now on to the other points:
The second technique worth mentioning is an alternative approach to forcing is via Boolean-valued models. I think this is what's tripping you up; it has nothing to do with ultrapowers, though. The idea is to get over the countability restriction in the poset-based approach. Of course we can't literally do this, since e.g. if $M$ is a transitive model of $\mathsf{ZFC}$ containing every real then it doesn't have any extensions by adding a single Cohen real, but we can fix this by broadening our notion of "model." Interestingly, the BVM-approach is also extremely useful in technical ways: the translation from a forcing poset $\mathbb{P}$ to the associated algebra of regular opens $\mathbb{B}_\mathbb{P}$ (nonstandard notation, sadly) is often quite helpful in answering concrete questions about forcing with $\mathbb{P}$ in the original sense. Jech's book Set theory (3rd Millenium edition) treats forcing in this way, but ultimately I don't recommend BVMs until you thoroughly understand the poset-based approach so I won't say more about that here.
Finally, there is the notion of Boolean-valued ultrapowers. But this is not the same as forcing (although they do interact in interesting ways)! It's a genuinely distinct topic that should be treated on its own after forcing is solidly understood, and to be honest I don't know very much about it. A good reference seems to be Hamkins/Seabold.