Paulos Abraham gav Bajen ledningen efter drygt fem minuter. Hampus Skoglund slog inlägg från höger, Abraham tryckte in 1-0.
Men BP kom tillbaka. Mads Hansen kvitterade efter dryga halvtimmen. 1-1.
Markus Karlsson återställde ledningen i slutminuterna av första halvlek med sitt första mål för säsongen. Därefter utökade Hammarby till 3-1.
Oscar Steinke gjorde sin första start för Hammarby sedan bytet från Örgryte. Ibrahima Fofana fick också speltid från start.
I BP fick tidigare Hammarby-backen Pavle Vagic göra debut.
Segern var välbehövlig för Hammarby som tappat mark i jakten på serieledarna Sirius. Tre poäng håller gulddrömmen vid liv.