Your problem is:
new Date('2020-09-15 11:52:22.000')
Using the built–in parser for unsupported formats is strongly discouraged. It's implementation dependent and often returns different results in different implementations.
Also, the string doesn't have a timezone so should be treated as local. So even if parsed correctly it will represent a different instant in time for each place with a different offset.
Date-fns has a capable parser so you should use it instead of the built–in paser. If you want the timestamp to be treated as UTC, the simplest way is to add a trailing "Z" and timezone token for parsing.
To support timezones for output, you have to include date-fns-tz. Following is some code you can run at npm.runkit. The format part appears to produce the correct result, however if a timezone token is added to the format string (i.e. 'X' or 'XX'), it shows the local timezone offset, not the one applied to the string so to show the offset correctly, you have to add it manually (I think this is a bug in date-fns-tz).
const dateFns = require("date-fns");
const { zonedTimeToUtc, utcToZonedTime, format } = require('date-fns-tz');
let timestamp = '2020-09-15 11:52:22.000';
let tz = 'Z';
let date = dateFns.parse(timestamp + tz, 'yyyy-MM-dd HH:mm:ss.SSSX', new Date());
// Show timestamp was parsed as UTC
console.log(date.toISOString()); // 2020-09-15T11:52:22.000Z
// Produce UTC output - need to set timezone first
let utcDate = utcToZonedTime(date, 'UTC');
// Manually add timezone to formatted string
console.log(format(utcDate, 'd MMM yyyy HH:mm \'UTC\'', 'UTC')); // 15 Sep 2020 11:52 UTC
Note that utcToZonedTime(date, 'UTC')
actually creates a new date modified by the specified offset and assigns it to utcDate, which I think is a real kludge. It's only useful now if you know how it's been modified, you don't know what time it's actually supposed to represent. In this case it might be clear because we're using UTC, but other offsets are much more problematic.
It would save a lot of effort if initial timestamp was in a format that is supported by ECMAScript, e.g. the same as that produced by toISOString: 2020-09-15T11:52:22.000Z.