Roman Bednar opened the scoring on 12 minutes and Hearts doubled their lead just eight minutes later with a great individual effort by Saulius Mikoliunas.
Simon Whalley scored the Lilywhites goal on 33 minutes.
Preston: Lonergan, Wilson, Mawene, Chivers, Alexander; Jarrett, McKenna, Pugh, Whaley, Dichio, Nugent.
Hearts: Banks, Neilson, Pressley (Tall, 46), Berra, Fyssas (Costa, 54), Mikoliunas, Brellier (Johnson, 60), Aguiar (Neill, 77), Driver (Beslija, 69), Bednar (Mole, 70), Pospisil (Makela, 71).