The Indonesian set the fastest time near the end of a treacherously-wet qualifying session on Friday.
The session was delayed by 15 minutes due to torrential rain, Although it did not dry out properly it became significantly less wet and the times tumbled throughout. Pole position changed hands eight times in 30 minutes.
Carlin driver Haryanto was in the mix for pole for the duration, locked in a fascinating battle with Lotus duo James Calado and Esteban Gutierrez, and iSport's Marcus Ericsson around one of the world's most spectacular - and most testing - circuits.
Haryanto's penultimate effort of 2m17.535s was enough for the top spot by just over a tenth of a second from a valiant Calado, who never gave up his chase.
Gutierrez was another tenth back in third, with fourth-placed Ericsson over half a second slower than the pole time - even though he was on top with just five minutes to go.
Jolyon Palmer's last-lap flyer meant there were two iSport cars in the top five, ahead of title contender Davide Valsecchi (DAMS) in sixth.
Championship leader Luiz Razia, who leads Valsecchi by seven points, suffered a disastrous session, and will start 18th in his Arden entry. He was actually 19th fastest, but Fabio Onidi has a 10-place grid penalty ahead of him.
Sergio Canamasas was a highly impressive seventh for the unfancied Lazarus team, ahead of practice pacesetter Fabio Leimer, Felipe Nasr and Giedo van der Garde.
Haryanto's four points for pole elevate him to 13th in the drivers' championship.
1. Rio Haryanto Carlin 2:17.535 / 13
2. James Calado Lotus GP 2:17.643 / 11
3. Esteban Gutiérrez Lotus 2:17.736 / 12
4. Marcus Ericsson iSport International 2:18.058 / 11
5. Jolyon Palmer iSport International 2:18.368 / 12
6. Davide Valsecchi DAMS 2:18.397 / 12
7. Sergio Canamasas Venezuela GP Lazarus 2:18.582 / 11
8. Fabio Leimer Racing Engineering 2:18.603 / 11
9. Felipe Nasr DAMS 2:18.801 / 12
10. Giedo van der Garde Caterham Racing 2:18.930 / 11
11. Stefano Coletti Scuderia Coloni 2:19.328 / 12
12. Nathanaël Berthon Racing Engineering 2:19.721 / 12
13. Max Chilton Carlin 2:19.803 / 12
14. Fabio Onidi Scuderia Coloni 2:20.100 / 12
15. Josef Kral Barwa Addax Team 2:20.224 / 12
16. Victor Guerin Ocean Racing Technology 2:20.289 / 13
17. Julian Leal Trident Racing 2:20.455 / 13
18. Ricardo Teixeira Rapax 2:20.484 / 13
19 Luiz Razia Arden International 2:20.712 / 11
20. Rodolfo Gonzalez Caterham Racing 2:20.752 / 11
21. Nigel Melker Ocean Racing Technology 2:20.888 / 11
22. Daniel De Jong Rapax 2:20.921 / 13
23. Stéphane Richelmi Trident Racing 2:21.070 / 11
24. Simon Trummer Arden International 2:21.790 / 13
25. Johnny Cecotto Barwa Addax Team 2:21.942 / 4
26. Rene Binder Venezuela GP Lazarus 2:22.795 / 11