The 27-year-old German delivered a fastest lap of one minute and 13.876 seconds in the final seconds of a rain-hit session to outpace 2008 champion Hamilton by 0.091 seconds.
It was Rosberg’s third successive pole, the team’s fourth in a row and the fourth of his career, and it set him up perfectly to attempt to become the first son of a victorious former Monaco winner to triumph on the streets of the Mediterranean principality.
Defending triple world champion Sebastian Vettel was third ahead of his Red Bull teammate Australian Mark Webber. Finn Kimi Raikkonen, the 2007 champion, was fifth for Lotus ahead of two-time champion Fernando Alonso of Ferrari, Mexican Sergio Perez of McLaren and German Adrian Sutil of Force India. Briton Jenson Button qualified ninth.
Photos: Kareena Kapoor Khan, Kangana Ranaut at the Mumbai airport
Photos: Virat Kohli-MS Dhoni's bromance, Team India in LOL mode
Bollywood celebs show you colours for Navratri 2017
Birthday special: Chris Gayle and his multiple records in cricket
In Pictures: 17 dreaded on-screen villains of Bollywood