To add to what @moonboots already said:
A normal map can basically be thought of as a high-performance way of telling the render engine "Hey, that light ray your shooting at this mesh? it'd look alot cooler if instead of bouncing away at this really sharp angle, it bounced away at a different softer angle"
How the mesh normally works while rendering.

What happens when you use a normal map:

Then, when you introduces smooth shading into the mix this is what happens:

Put a normal map on top of it and it gets even messier, You can see that there are parts of the mesh where the normal map has to do a ton of heavy lifting to get the mesh to look how it thinks it should. This is where those gradients are coming from.

So ultimately you have one of two options: Either split the normal with Auto Smooth and let the normal map do it's own thing entirely. This has it's drawbacks. Each split edge on the mesh has to be on it's own UV island or it will cause other normal map issues. From a technical standpoint it also turns each vertex on a split edge to two, which can increase poly count and slow performance (though this doesn't really matter much anymore these days).
Or you can bevel the edges slightly, and use weighted normals to find the happy medium between the two.

You want to pick one or the other though. Other wise you'll keep getting your render engine confused like this.
I would recommend reading all of EarthQuake's threads on normal map baking on polycount. I probably read them about 15 times apiece until I really "got" them.
.blend
file. Ensure your textures are packed with File > External Data > Pack resources $\endgroup$