You can use any table-like destination for the OUTPUT..INTO clause. It is not limited to table variables. E.g. using a table:
USE tempdb;
GO
DROP TABLE IF EXISTS #Data;
CREATE TABLE #Data (
ID INT ,
Payload INT
);
DROP TABLE IF EXISTS #Temp;
CREATE TABLE #Temp (
ID INT ,
NewPayload INT ,
OldPayload INT
);
INSERT INTO #Data ( ID ,
Payload )
VALUES ( 1, 1 );
UPDATE #Data
SET Payload += 1
OUTPUT Inserted.ID ,
Inserted.Payload ,
Deleted.Payload
INTO #Temp;
SELECT *
FROM #Data D;
SELECT *
FROM #Temp T;