Captain Robert Lewandowski opened the scoring for the Poles in the 40th minute from close range and then assisted when Karol Linetty made it 2-0 with a header five minutes later.
Lewandowski brought the score to 3-0 with a clinical finish after the interval in the 51st minute.
Anel Ahmedhodzic was sent off with a red card in the 15th minute.
The game, in front of a crowd of around 10,000 at the Municipal Stadium in the southwestern Polish city of Wrocław amid the coronavirus pandemic, saw Poland put on another strong performance against the Balkan side after a confidence-boosting win in an away clash last month.
Poland are ranked 19th worldwide by football's governing body FIFA, while Bosnia-and-Herzegovina are No. 50 in the FIFA table.
After four rounds of fixtures, Poland are top of their Nations League Group A1, with seven points, one more than Italy and two more than the Netherlands.
In their previous three Nations League games, the Poles tied 0-0 with Italy, beat Bosnia-and-Herzegovina 2-1 away, and lost 0-1 to the Netherlands last month.
The Polish team next takes on Italy away on November 15.
The Nations League is the European football governing body UEFA’s newest national-team competition that is now in its second edition.
The competition is designed to enable teams to play against those that are similarly ranked and also offers an alternative path for teams to qualify for the 2022 World Cup.
Portugal won the first edition of the Nations League last year.
Upcoming Poland fixtures
November 11: Ukraine (friendly, Chorzów)
November 15: Italy (Nations League, Rome)
November 18: The Netherlands (Nations League, Chorzów)
Source: Polsat Sport, PAP