Hamilton's title rival Max Verstappen qualified third for the sprint race, which will set Sunday's grand prix grid, but finished 0.411s adrift of Bottas, who was running a newly fitted fresh engine for the Q1-Q2-Q3 session.
After the first runs in Q3, it was Hamilton who led the way with a 1m19.949s, where Verstappen trailed in second just 0.17s adrift.
But although Hamilton followed Bottas around for the final fliers – the Mercedes cars had not given each other tow in the earlier segments – the Finn gained ground throughout.
Bottas posted purple sectors in opening two thirds of the Monza lap and roared around to post a 1m19.555s, as Hamilton improved on his own personal best, but wound up 0.096s adrift.
After taking a fourth engine of 2021, Bottas will serve a grid penalty for Sunday's grand prix, with the sanction only applying once Saturday's sprint qualifying race has finished.
Verstappen had been significantly adrift of the Mercedes pair earlier in qualifying, but his pace on the first Q3 lap raised hopes of a Red Bull challenge.
But despite running close behind teammate Sergio Perez, who qualified down in ninth, Verstappen could not set a personal best on his final effort in any sector.
Lando Norris was just 0.065s behind Hamilton after the first Q3 runs and although he found time on the second efforts – both times Norris followed teammate Daniel Ricciardo – the British driver finished 0.434s behind Bottas's best.
Ricciardo took fifth, along with the fastest time in the final sector, while Pierre Gasly was sixth for AlphaTauri.
Carlos Sainz made a late improvement to jump ahead of Ferrari teammate Charles Leclerc in Q3, with Leclerc grappling with an intermittent engine braking problem throughout Q1 and Q2.
Alfa Romeo's Antonio Giovinazzi made it through to Q3 for the second successive race, this time on home soil, with the Italian driver rounding out the top 10.
Q2, topped by Hamilton, ended with a flurry of fast times, which followed a pitlane scramble to get back onto the track ahead of the final runs.
The Aston Martin cars appeared be released into the path of the Mercedes drivers and Verstappen, with Sebastian Vettel ending up very close to Hamilton's right-side wheels as he went around an Aston mechanic that had to hold Lance Stroll before a path was cleared.
Ocon also appeared from the Alpine garage as the pack ran down the pitlane, with Leclerc also getting out ahead and the entire incident set to be investigated after qualifying.
All five drivers that were knocked out in Q2 set personal best times on their final fliers, with the pack backing off ahead of the Parabolica but all the drivers getting through in time to complete a final lap.
Vettel was vocally frustrated to be knocked out in 11th ahead of Stroll, with the Astons followed by Alpine duo Fernando Alonso and Ocon.
George Russell qualified 15th for Williams, after only making it through to Q2 after Yuki Tsunoda lost his Q1 personal best for running too wide out of the final corner on his last lap.
Traffic was a major issue in Q1, with Verstappen and Gasly particularly aggrieved to come across cars at the della Roggia chicane and the Ascari chicane in separate incidents midway through the opening segment, the former arriving with the Alpine cars and Stroll going slowly in front of him, while the latter had to back out of a lap after coming across Leclerc going slowly through Ascari's first apex.
A massive pack of cars toured slowly down the back straight in the final seconds before the chequered flag came out, but all were able to get in one final effort.
Improvements from Alonso, Ocon and Tsunoda shuffled the Williams drivers down the order and both seemingly out.
Russell nearly paid the price for not setting a personal best on his final Q1 flier, something Latifi also did not do as he ended up behind Tsunoda before the AlphaTauri lost its final time, while Mick Schumacher, Robert Kubica and Nikita Mazepin saved their best for last.
But personal bests right at the end of Q1 could not get them any higher up the order than 18th, 19th and 20th, with Tsunoda's second fastest time good enough for 17th.
Mazepin faces a post-qualifying investigation for appearing to impede Kubica at the first Lesmo ahead of the final runs, but will not face an investigation for an incident where he was called out of his garage only narrowly in front of Leclerc and Sainz during Q1's early stages.
|3||Max Verstappen||Red Bull||1'19.966||0.411|
|7||Carlos Sainz Jr.||Ferrari||1'20.462||0.907|
|9||Sergio Perez||Red Bull||1'20.611||1.056|
|10||Antonio Giovinazzi||Alfa Romeo||1'20.808||1.253|
|11||Sebastian Vettel||Aston Martin||1'20.913||1.358|
|12||Lance Stroll||Aston Martin||1'21.020||1.465|
|19||Robert Kubica||Alfa Romeo||1'22.530||2.975|