Here's my guess. You note in a comment that "If the browser uses the profile, it gets sRGB, if not, then it defaults to sRGB." But, that's not necessarily the case. The browser may say "If there's a profile, I'll treat the photo as color managed" and "If there's no profile, show it in the monitor's native colors". That native space may be sRGB, and for a long time, that was a fine approximation of reality, but isn't necessarily true especially if you have a fancy new monitor.
There's a page here: http://www.gballard.net/psd/go_live_page_profile/embeddedJPEGprofiles.html which goes into detail. The top demo lets you mouse over to see the difference between Adobe RGB and sRGB in taggged and untagged versions; scroll down to see different color spaces compared to the same color space untagged. On my laptop (with a terrible yet color-profiled screen) and Firefox, Adobe RGB shows a more visible jump, but untagged sRGB is definitely also different from tagged. (While tagged Adobe RGB and sRGB both appear indistinguishable.)
I also notice that on my system, the untagged sRGB image shows up slightly darker and with more contrast. That sounds like it might be what you describe when you say the one with the embedded profile is "faded". So, I think bottom line is that the version with the ICC profile is probably actually correct; if you want it to be "punchier", adjust your processing accordingly.